Контроль доступа и аудит
ide99 проектирует MCP так, чтобы агент не мог совершить опасное действие без вашего ведома. Это значит: четыре уровня разрешения на каждый вызов и локальный аудит-лог, который никуда не отправляется.
Четыре кнопки в диалоге Allow / Deny
При вызове любого MCP-инструмента ide99 показывает модальное окно:
Claude Code → run db_query_write
UPDATE orders SET status='paid' WHERE id IN (123, 456);
[ Allow once ]
[ Allow read-only session ]
[ Allow with confirm for each ]
[ Deny ]
| Кнопка |
Что делает |
| Allow once |
Разрешить именно этот вызов. Следующий раз снова спросит. |
| Allow read-only session |
На текущую сессию агента разрешить только read-инструменты (SELECT, EXPLAIN, schema_*). Запись по-прежнему будет спрашивать. |
| Allow with confirm for each |
Разрешить весь интерактив, но КАЖДЫЙ write по-прежнему требует подтверждения. |
| Deny |
Отклонить вызов. Агент получит ошибку и продолжит работу без этих данных. |
Сессия = период, пока клиент подключён. Закрытие Claude Code или disconnect MCP-сервера сбрасывает все разрешения.
Что ВСЕГДА требует подтверждения
Эти инструменты не могут быть «pre-approved» ни одной из кнопок выше — они всегда показывают отдельный диалог:
db_drop — DROP TABLE / INDEX / VIEW
db_truncate — TRUNCATE
pg_terminate_backend — убить чужую сессию
- Любой
db_query_write против connection с prod env — даже после Allow read-only session эти будут проходить через подтверждение
На prod-подключении при db_drop ide99 потребует ввести имя таблицы для подтверждения, как в обычной форме.
Read-only режим подключения и MCP
Если в форме подключения включён Read-only, MCP-агент физически не сможет выполнить запись через ide99. Даже если вы по ошибке нажали Allow — Postgres-драйвер в ide99 откажет с ошибкой read-only transaction. Это последняя защита.
Авторизованные клиенты
Настройки → AI / MCP → Authorized clients показывает список подключений:
| Поле |
Что значит |
| Name |
Self-reported имя клиента: «Claude Code on Mac», «Cursor», «Windsurf» |
| First connected |
Когда подключился впервые |
| Last activity |
Последний вызов инструмента |
| Pre-approved tools |
Список инструментов, на которые в текущей сессии вы дали Allow |
| Revoke |
Отозвать сессию: подключение разрывается, все pre-approvals сбрасываются |
После Revoke клиент должен переподключиться (это происходит автоматически), и ide99 снова покажет диалог при первом вызове любого инструмента.
Audit-лог
Каждый MCP-вызов пишется в mcp-audit.log — локальный файл, JSONL.
| ОС |
Путь |
| macOS |
~/Library/Application Support/ide99/mcp-audit.log |
| Linux |
~/.config/ide99/mcp-audit.log |
| Windows |
%APPDATA%\ide99\mcp-audit.log |
Пример строки:
{
"ts": "2026-05-22T12:13:14.567Z",
"client": "claude-code",
"client_id": "0c9b...",
"tool": "db_query_write",
"args": {"sql": "UPDATE orders SET status='paid' WHERE id IN (123, 456);"},
"connection": "db_prod",
"decision": "allow_once",
"duration_ms": 42,
"rows_affected": 2
}
Лог-файл ротируется, когда превышает 50 МБ — старые ротации .1.gz, .2.gz и так далее. Можно открыть прямо в ide99: Настройки → AI / MCP → Open audit log.
Что в логе НЕТ
- Содержимого результатов запросов (rows). Только количество.
- Промптов агента и его ответов LLM-провайдеру (это в логах самого клиента, не в ide99).
- Шифрованных значений (паролей и т.п. из
pg_authid).
Что делать, если агент ведёт себя странно
- Откройте audit-лог: видно последние 100 вызовов с тем, что агент пытался сделать и какое было ваше решение.
- Если есть подозрительный
Allow — сделайте Revoke клиента в Authorized clients. Это сбросит pre-approvals.
- На время отладки можно перевести подключение в Read-only — даже если агент попытается записать, Postgres откажет.
Что дальше