Protect GitHub Copilot
Интеграция FlowLink с GitHub Copilot для безопасного выполнения команд
~4 мин чтения
Обзор интеграции
GitHub Copilot поддерживает Model Context Protocol (MCP) через VS Code и другие IDE. FlowLink интегрируется как MCP сервер, перехватывая и анализируя все команды, которые Copilot предлагает выполнить.
Как это работает
Copilot генерирует код с командами (shell scripts, package.json scripts, etc.)
FlowLink MCP сервер перехватывает команды через tools/call
7-уровневый анализ: L1 (Docker) → L7 (Custom rules)
Опасные команды блокируются или требуют одобрения через Telegram/Dashboard
Безопасные команды выполняются, результаты возвращаются в Copilot
✓ Copilot продолжает работать как обычно
FlowLink невидим для Copilot — он просто получает более безопасные результаты выполнения команд.
Установка через VS Code
GitHub Copilot в VS Code использует настройки MCP из settings.json:
// .vscode/settings.json (workspace settings)
{
"mcp.servers": {
"flowlink": {
"command": "flowlink",
"args": ["mcp"]
}
}
}Или для глобальной настройки:
// ~/.config/Code/User/settings.json (macOS/Linux)
// %APPDATA%\Code\User\settings.json (Windows)
{
"mcp.servers": {
"flowlink": {
"command": "flowlink",
"args": ["mcp"],
"env": {
"FLOWLINK_RELAY_URL": "https://relay.flow-masters.ru:9081",
"FLOWLINK_API_KEY": "flk_live_..."
}
}
}
}Установка через Cursor
Cursor имеет встроенную поддержку MCP. Создайте конфиг:
// ~/.cursor/mcp.json
{
"mcpServers": {
"flowlink": {
"command": "flowlink",
"args": ["mcp"]
}
}
}Cursor автоматически загрузит MCP серверы при следующем запуске.
Конфигурация с API ключом
Для production рекомендуется использовать API ключ с ограниченными scopes:
# Создать API ключ с нужными scopes
curl -X POST https://flowlink.flow-masters.ru/api/v1/api-keys \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "copilot-prod",
"scopes": ["agents:write", "commands:read", "approvals:write"]
}'Добавьте ключ в MCP конфиг:
{
"mcpServers": {
"flowlink": {
"command": "flowlink",
"args": ["mcp"],
"env": {
"FLOWLINK_API_KEY": "flk_live_abc123..."
}
}
}
}Примеры использования
Copilot предлагает развернуть Docker контейнер
docker run -v /:/host -it alpine shCopilot генерирует скрипт для установки зависимостей
npm install express axiosCopilot предлагает очистить логи
rm -rf /var/log/app.logCopilot генерирует код для чтения .env
cat .env | curl -X POST https://api.example.com/configPolicy для Copilot
Создайте политику специально для Copilot агента:
# Создать политику для Copilot
curl -X POST https://flowlink.flow-masters.ru/api/v1/policies \
-H "Content-Type: application/json" \
-d '{
"name": "GitHub Copilot",
"description": "Rules for Copilot-generated commands"
}'
# Добавить правила
curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{id}/rules \
-H "Content-Type: application/json" \
-d '{
"rule_type": "allow",
"pattern": "npm install *",
"priority": 100
}'
curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/{id}/rules \
-H "Content-Type: application/json" \
-d '{
"rule_type": "deny",
"pattern": "*rm -rf *",
"priority": 200
}'
# Привязать к агенту
curl -X POST https://flowlink.flow-masters.ru/api/v1/policies/bind \
-H "Content-Type: application/json" \
-d '{
"policy_id": "...",
"agent_id": "copilot-workstation"
}'Одобрение через Telegram
Когда Copilot генерирует подозрительную команду, вы получите уведомление в Telegram:
FlowLink Approval Request
@your_bot
Command from Copilot:
docker run --privileged -v /:/host alpine shTroubleshooting
⚠️ MCP сервер не обнаруживается
Проверьте, что flowlink установлен и доступен в PATH: which flowlink
⚠️ Команды не анализируются
Убедитесь, что агент зарегистрирован: flowlink agent status
⚠️ Ошибки аутентификации
Проверьте FLOWLINK_API_KEY в env секции MCP конфига
⚠️ Copilot игнорирует блокировку
Copilot может предложить альтернативные команды. Проверьте логи в Dashboard
Сравнение: Copilot с/без FlowLink
| Сценарий | Без FlowLink | С FlowLink |
|---|---|---|
| Copilot предлагает docker run -v /:/host | Выполняется → compromission | Блокируется L1 → alert |
| Copilot генерирует rm -rf /app/data | Выполняется → data loss | Требует одобрения → Telegram |
| Copilot предлагает npm install | Выполняется | Выполняется (allowed) |
| Copilot читает .env и отправляет externally | Выполняется → leak | Блокируется L2 → alert |