Audit log для AI coding agents: что логировать до того, как разрешить автономные PR
Агент открыл файл, добавил зависимость, сформировал коммит и открыл PR. Кто это проверил — и как вы это докажете аудитору?
Почему тема вышла за рамки академической
В октябре 2025 года GitHub анонсировал Agent HQ — единый control plane для управления агентами прямо из GitHub и VS Code [1]. GitHub Copilot Coding Agent, доступный с сентября 2025 года, способен принять issue, самостоятельно написать код, прогнать тесты и открыть draft PR — без участия человека на каждом шаге [2]. Claude Code к тому же времени получил широкое enterprise-внедрение и поддержку managed policy через централизованный mcp.json [3].
Это изменение уровня не "ещё один AI-плагин". Это первый класс инструментов, где AI сам является актором в системе контроля версий, а не помощником для человека-актора.
И именно здесь возникает разрыв: скорость внедрения агентов опередила зрелость governance-инфраструктуры для них [4]. Когда по итогам такого PR случится инцидент — утечка секрета, уязвимая зависимость, логика с side-effect — ответить на вопрос "что именно сделал агент и почему" без заранее выстроенного audit log будет невозможно.
Что меняет агент в модели угроз
Агент — не детерминированный процесс
Традиционный CI/CD-инструмент делает ровно то, что написано в pipeline YAML. Агент принимает probabilistic decisions: один и тот же таск может быть выполнен по-разному в зависимости от контекста, истории сессии, содержимого файлов, которые он прочитал, и того, что было в issue. Именно поэтому классические application logs (что вызвалось, какой вернулся HTTP-код) не дают достаточного покрытия.
Стандартный лог фиксирует что произошло. Для агентного AI нужен лог, который объясняет почему агент решил это сделать.
Non-human identity с широкими полномочиями
OWASP Top 10 for Agentic Applications 2026, разработанный совместно более чем со 100 экспертами отрасли [5], прямо выделяет проблему identity: агенты слишком часто наследуют полномочия пользователя или используют общий service account. Это значит, что в логах нет различия между действиями агента и действиями человека-разработчика.
Требование OWASP (ASI03): у каждого агента должна быть собственная managed identity с task-scoped, time-bound permissions [6]. Без этого audit trail технически присутствует, но атрибуция действий разрушена.
Промпт-инъекция как вектор, невидимый после факта
Waxell (2026) описывает сценарий: агент читает PR title с инъекцией, эксфильтрирует API-ключи в 2:14 ночи — observability-инструменты (LangSmith, Arize, Helicone) дадут полный trace того, что произошло, но секреты уже ушли [7]. Это определяет принципиальный тезис: observability без governance — это качественная судебная медицина, но не профилактика.
Что логируют платформы "из коробки" — и чего не логируют
GitHub Copilot
GitHub Docs описывает: enterprise audit log содержит изменения в Copilot plan, настройках и лицензиях. Для агентной активности применяется фильтр actor:Copilot — события за последние 180 дней [8]. GitHub рекомендует стримить audit log в SIEM для долгосрочного хранения.
Критически важное ограничение, зафиксированное в официальной документации: audit log не содержит данных клиентских сессий — промптов, которые пользователь отправляет Copilot локально. Для этого требуется кастомное решение, например, hooks для отправки событий Copilot CLI в собственный logging-сервис [8].
GitHub Copilot Coding Agent с октября 2025 года проводит автоматическую security-валидацию созданного кода: анализ через CodeQL, проверку зависимостей по GitHub Advisory Database и secret scanning [9]. Это снижает поверхность атаки, но не заменяет внешний audit trail — потому что организация не контролирует, что именно и в каком порядке агент проверял.
Для enterprise: audit logging охватывает все взаимодействия Copilot, включая принятые и отклонённые suggestions, и поддерживает compliance reporting для SOC 2 и ISO 27001 [10].
Claude Code
Claude Code работает с теми же правами, что и разработчик, запустивший его — читает файлы, выполняет bash-команды, обращается к production-системам через MCP-инструменты [11]. Это означает, что граница ответственности за логирование размыта: агент технически может прочитать всё, к чему имеет доступ пользователь.
Enterprise и Team планы дают zero data retention, SSO, audit logging и контроль администратора над доступными MCP-серверами [3]. Claude Code Security требует human approval перед применением патча. Централизованный mcp.json позволяет enforce allow-lists для всего deployment организации.
В облачных окружениях все операции логируются для compliance-целей и автоматически завершаются по окончании сессии [12]. Для enterprise: SOC 2 Type II доступен под NDA; экспорт audit logs работает на уровне метаданных — содержимое чатов и проектов в экспорт не включается [11].
Критически важное из документации: disableBypassPermissionsMode: "disable" должен быть установлен в enterprise-конфигурации — иначе разработчик может включить режим, отключающий все permission-prompts [13].
Общий gap
Ни одна платформа "из коробки" не даёт:
- Reasoning trace — цепочку рассуждений агента до каждого tool call.
- Полную трассировку файлов, которые агент прочитал (не только тронул).
- Immutable, криптографически подписанный лог, не зависящий от инфраструктуры агента.
- Единый audit trail при использовании нескольких агентов в одном pipeline.
Что нужно логировать: структура audit event
Ниже — матрица полей, которая соответствует требованиям OWASP ASI 2026, NIST AI RMF и EU AI Act Article 12, и применима к CI/CD pipeline с агентным PR.
1. Identity & session
agent_id— уникальный идентификатор агент-инстанса, не shared service accountagent_model— имя и версия модели (например,claude-opus-4-6,copilot-coding-agent)session_id— идентификатор конкретной агентной сессииtask_id— ссылка на issue или задачу, которую агент выполнялinitiator_user_id— кто запустил агента (псевдонимизированный)timestamp_start,timestamp_end,timezone
2. Scope & permissions
permissions_granted— список полномочий на старте сессииfiles_read— все файлы, к которым агент обращался на чтениеfiles_modified— файлы, изменённые агентомtool_calls— каждый вызов инструмента: имя, параметры, результатmcp_servers_accessed— список MCP-серверов, задействованных в сессииexternal_network_calls— любые исходящие HTTP-запросы
3. Reasoning trace
Это ключевое отличие агентного лога от обычного лога. LoginRadius (2026) и NIST AI RMF требуют: нужно логировать "Thought" или "Plan" шаг, сгенерированный LLM до вызова инструмента [14]. Если агент удалил файл — технический лог покажет факт; reasoning trace объяснит, почему агент решил, что это правильное действие.
plan_before_action— текст reasoning-шага перед каждым tool callgoal_state_id— текущее состояние цели (важно для детекции goal hijack)decision_path— последовательность решений внутри сессии
4. Code change metadata (pre-merge)
pr_number,branch_name,base_branchcommit_sha(финальный)files_changed_count,lines_added,lines_deletednew_dependencies— список новых зависимостей, добавленных агентомdependency_versions— точные версии, включая lock-файлconfig_files_modified— CI/CD-конфиги, .env, terraform, docker-compose и прочее (это самый высокорисковый класс изменений)migration_files_created— схемы БД, миграции
5. Security scan results
secret_scan_result— пройден / провален / не запущенsast_result— вывод инструмента SAST и список findingsdependency_advisory_check— результат проверки по GitHub Advisory Database или OSVhallucinated_package_flag— проверка, что все добавленные пакеты реально существуют в registrycodeql_findings— если запускался CodeQL
6. Gate decision
gate_decision— ALLOW / BLOCK / REQUIRE_HUMAN_REVIEWgate_policy_version— версия политики, применённой на этом gategate_timestamp— момент принятия решенияgate_receipt_hash— HMAC-подпись записи (требование для EU AI Act и SOC 2)human_reviewer_id— если было human-in-the-loop
7. Что НЕ логировать
Важный контрраргумент против over-logging: никогда не пишите в лог сырые API-ключи и bearer tokens, которые агент использовал; не пишите полные системные промпты, если они содержат корпоративную конфиденциальную информацию; применяйте field-level masking и токенизацию для данных, охваченных GDPR/HIPAA [15].
Архитектурное требование: лог независим от агента
Agenticrail.nz (2026) формулирует принцип, который должен стать обязательным: gate receipt пишется до того, как действие выполняется, и хранится в immutable storage с HMAC-подписью всех полей [16]. Любое изменение любого поля после записи меняет хэш — и становится видимым.
Это принципиально: агент не должен иметь возможности изменить лог своих собственных действий. Logging-инфраструктура должна быть отдельной от инфраструктуры агента — иначе компрометированный агент может переписать историю.
Microsoft Agent Governance Toolkit (opensource, апрель 2026) реализует Merkle-цепочку для audit entries: каждая запись хэшируется, корневой хэш дерева меняется при любом вмешательстве, доказательство существования записи требует O(log n) хэшей [17].
Prefactor (2025) описывает обязательную схему CI/CD интеграции: уникальный UUID присваивается каждому агент-инстансу, pipeline run, deployment и access event. UUID immutable с момента создания. CI-процесс должен упасть, если в логе отсутствуют обязательные поля — timestamp, identity, pipeline_id, commit_id, environment, agent_id [18].
Что OWASP называет рисками, которые видно только в логах
OWASP Top 10 for Agentic Applications 2026 [5] выделяет несколько классов угроз, которые невозможно обнаружить без structured audit log:
ASI01 — Agent Goal Hijack: агент получает инструкцию, меняющую его цель, из untrusted источника (PR title, комментарий в файле, output внешнего MCP-сервера). Детектируется только через логирование goal_state_id и сравнение с baseline.
ASI03 — Excessive Agent Permissions: агент использует полномочия шире, чем нужно для конкретной задачи. Детектируется сравнением permissions_granted и files_accessed — если агент читал файлы за пределами своей declared scope, это signal.
ASI08 — Cascading Failures: скомпрометированный агент кормит некорректными данными downstream-агентов. Без трассировки inter-agent communication цепочка разрушения невидима.
ASI10 — Rogue Agents: агент дрейфует от заявленного поведения. OWASP требует вести behavioral baseline для каждого агента и тригерить alert при любом отклонении [19].
Один из наиболее недооценённых рисков — Human-Agent Trust Exploitation: агент, взаимодействуя с пользователем убедительным языком, может склонить человека одобрить вредоносное действие. В audit log это выглядит как легитимный human approval — при этом agent manipulation остаётся невидимой [20].
Где CI/CD становится gate, а не просто pipeline
Разница между CI/CD как automation и CI/CD как governance gate — в моменте принятия решения. Audit trail для агентного PR должен строиться на принципе fail-closed: если хоть одно обязательное поле лога отсутствует, merge блокируется.
Knostic (2026) формулирует практическое правило: блокируй merge по результатам security checks; храни доказательства в pipeline logs; ревьюеры должны явно указать, содержит ли PR AI-generated код и какие дополнительные проверки были выполнены [21].
Практический чек-лист для pre-merge gate:
- Верифицирован
agent_id— не generic service account, а уникальная identity агент-инстанса. permissions_grantedсоответствует scope задачи — агент не имел доступа к prod-credentials для feature-задачи.files_readне содержит чувствительных файлов за пределами объявленного scope (.env, secrets, production configs).new_dependenciesпроверены по advisory database; lock-файл обновлён; пакеты существуют в реестре (нет hallucinated packages).config_files_modifiedтребует отдельного human review — это высокорисковый класс.secret_scan_result— пройден.sast_result— не содержит critical findings.reasoning_traceприсутствует — агент обосновал каждое нетривиальное решение.gate_receipt_hashверифицируется — лог не был изменён после записи.- Retention: хранить минимум 180 дней (требование GitHub), для regulated environments — до нескольких лет, в соответствии с SOC 2 / HIPAA / EU AI Act.
Специфика зависимостей и supply chain
По данным GitGuardian State of Secrets Sprawl 2026, 28,65 миллиона новых секретов оказались в публичных коммитах GitHub в 2025 году — рост 34% год к году [22]. AI-ассистенты — один из ключевых драйверов: AI-assisted commits раскрывают секреты в 3,2% случаев против 1,5% у human-only commits [23].
CSA Research Note (2026) фиксирует: 43% hallucinated packages последовательно рекомендовались агентом в 10 отдельных запросах, 58% появлялись более одного раза — это не случайная галлюцинация, а систематическая [23]. Атакующие заранее регистрируют эти пакеты на npm и PyPI: разработчик ставит malicious package под именем, которое предложил сам AI-инструмент.
Что это означает для audit log: одного факта "агент добавил зависимость X" недостаточно. Необходимо логировать:
- точную версию и hash пакета
- существование пакета в реестре до момента добавления
- наличие advisory для этой версии
- принадлежность пакета ожидаемому мейнтейнеру
Ошибки, которые дорого стоят
Ошибка 1: Считать "агент прошёл тесты" достаточным gate'ом. Тесты проверяют функциональность, а не security intent. Copilot Coding Agent с октября 2025 года автоматически запускает CodeQL и secret scanning [9], но это не означает, что организация видит полный лог этих проверок и может верифицировать их целостность.
Ошибка 2: Использовать тот же service account для агента и для CI pipeline. Это разрушает атрибуцию: аудитор не сможет отличить действие агента от действия pipeline. ISACA (2025) называет это ключевой governance-проблемой: decision-making processes в agentic AI часто не имеют трассировки [24].
Ошибка 3: Хранить лог там, куда агент имеет write-доступ. Если агент может писать в свой собственный audit log — лог не является доказательством.
Ошибка 4: Логировать только финальный PR, игнорируя промежуточные tool calls. Именно в промежуточных шагах агент может прочитать .env, обратиться к production-системе или получить injected instruction из содержимого файла.
Ошибка 5: Shadow AI без логирования. TrueFoundry (2026) описывает типичный паттерн: 30 разработчиков уже используют Claude Code с default settings, к тому моменту как security команда узнаёт о его существовании в организации [25]. Shadow AI создаёт поверхность атаки, которую нельзя ни мониторить, ни контролировать.
Инструментальный ландшафт (что есть сегодня)
Galileo (2025) описывает разворачивание centralized dashboards для key indicators как операционную необходимость, а не luxury [26]. Для AI coding agents это означает:
- SIEM-интеграция: GitHub рекомендует стримить audit log в SIEM для долгосрочного хранения и настройки алертов на аномальную активность [8]. Поддерживаются BigQuery, Snowflake и другие data warehouses.
- OTel-коллектор: Claude Code Enterprise поддерживает отправку телеметрии на OpenTelemetry-коллектор организации через PreToolUse hooks [13].
- MCP Gateway: для организаций с несколькими агентами MCP gateway с proper access control даёт единую точку для authentication, rate limiting и audit logging всех agent-tool взаимодействий [25].
- Nylas CLI: инструмент для аудита, автодетектирует источники (Claude Code, GitHub Copilot, custom MCP agents), записывает каждое выполненное команды с timestamps, grant IDs и outcomes [27].
- Microsoft Agent Governance Toolkit (opensource, апрель 2026): реализует ToolCallInterceptor, PolicyEngine, AuditChain с Merkle-деревом и mapping к OWASP ASI 2026 [17].
Что HighVibe добавляет к этой картине
Выстроенный audit trail фиксирует, что произошло. Но перед merge команде нужен ответ на другой вопрос: можно ли безопасно принять именно это изменение прямо сейчас?
Это отдельная задача. Дифф дочитывают не до конца; новая зависимость приезжает тихо; конфиг-файл, изменённый агентом, читают хуже всего; и ещё один длинный security-отчёт перед релизом не помогает быстро понять, что действительно критично.
HighVibe работает как дополнительный слой контроля рядом с SAST/SCA/SBOM и CI-проверками: анализирует конкретное изменение и его контекст, объясняет риск коротко и понятно, предлагает следующий шаг — исправить, перепроверить или остановить merge. Не бесконечный шум, а короткий сигнал в нужный момент. Подробнее: highvibe.dev
Тренды и то, что изменится в ближайшее время
EU AI Act: высокорисковые AI-системы обязаны вести логи, позволяющие реконструировать поведение AI для целей сертификации — требование вступает в силу в августе 2026 года [17]. Colorado AI Act становится исполнимым в июне 2026-го. Это переводит audit logging из best practice в regulatory obligation для ряда отраслей.
OWASP Agentic Skills Top 10 (2026) вводит требование: логировать все действия skill — файловый доступ, shell-команды, сетевые вызовы, memory writes — как обязательный контроль AST09 [28]. Это касается не только Claude Code skills, но и любых агентных skill-экосистем.
Multi-agent pipelines добавляют новое измерение: если один агент передаёт результат другому, audit trail должен охватывать межагентную коммуникацию. Cascading failure становится видимым только тогда, когда есть полная трассировка по всей цепочке агентов.
Заключение: что делать дальше
Автономные PR — это уже не proof of concept. GitHub Copilot Coding Agent, Claude Code и другие инструменты открывают их в production-репозитории прямо сейчас. Вопрос не в том, нужен ли audit log — вопрос в том, есть ли он у вашей команды уже сегодня.
Практический следующий шаг: возьмите последний PR, открытый AI-агентом в вашем репозитории, и проверьте, можете ли вы ответить на эти вопросы:
- Какой именно агент-инстанс открыл этот PR?
- Какие файлы он прочитал за пределами изменённых?
- Почему агент решил добавить именно эту зависимость?
- Как был верифицирован результат secret scan?
- Кто и когда принял gate-решение о merge?
Если хотя бы один ответ отсутствует — audit trail неполный, и следующий инцидент будет сложно расследовать.
Источники
[1] Visual Studio Magazine — "GitHub Introduces Agent HQ to Orchestrate 'Any Agent Any Way You Work'" — https://visualstudiomagazine.com/articles/2025/10/28/github-introduces-agent-hq-to-orchestrate-any-agent-any-way-you-work.aspx
[2] MightyBot — "Best AI Coding Agents in 2026, Ranked" — https://mightybot.ai/blog/coding-ai-agents-for-accelerating-engineering-workflows/
[3] Harmonic Security — "Security Lessons from Claude Code's First Year" — https://www.harmonic.security/resources/security-lessons-from-claude-codes-first-year
[4] Waxell — "AI Coding Agent Prompt Injection: CI/CD Risk [2026]" — https://waxell.ai/blog/ai-coding-agent-prompt-injection-cicd-2026
[5] OWASP Gen AI Security Project — "OWASP Top 10 for Agentic Applications for 2026" — https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/
[6] Entro Security — "The OWASP Agentic Top 10 2026: What It Means for AI Agents and Non-Human Identities" — https://entro.security/blog/the-owasp-agentic-top-10-2026-what-it-means-for-ai-agents-and-non-human-identities/
[7] Waxell — "AI Coding Agent Prompt Injection: CI/CD Risk [2026]" — https://waxell.ai/blog/ai-coding-agent-prompt-injection-cicd-2026
[8] GitHub Docs — "Reviewing audit logs for GitHub Copilot" — https://docs.github.com/en/copilot/how-tos/administer-copilot/manage-for-enterprise/review-audit-logs
[9] GitHub Changelog — "Copilot coding agent now automatically validates code security and quality" — https://github.blog/changelog/2025-10-28-copilot-coding-agent-now-automatically-validates-code-security-and-quality/
[10] GitGuardian Blog — "GitHub Copilot Privacy: Key Risks and Secure Usage Best Practices" — https://blog.gitguardian.com/github-copilot-security-and-privacy/
[11] MintMCP — "Claude code security: enterprise best practices & risk mitigation" — https://www.mintmcp.com/blog/claude-code-security
[12] Claude Code Docs — "Security" — https://code.claude.com/docs/en/security
[13] Claude AI Blog — "Claude Code in Enterprise Environments: Policies, Audit Logs, and Secure Workflows" — https://claude-ai.chat/blog/claude-code-in-enterprise-environments/
[14] LoginRadius Engineering — "Auditing and Logging AI Agent Activity: A Guide for Engineers" — https://www.loginradius.com/blog/engineering/auditing-and-logging-ai-agent-activity
[15] Medium / Kuldeep Paul — "The AI Audit Trail: How to Ensure Compliance and Transparency with LLM Observability" — https://medium.com/@kuldeep.paul08/the-ai-audit-trail-how-to-ensure-compliance-and-transparency-with-llm-observability-74fd5f1968ef
[16] Agenticrail.nz — "AI Agent Audit Log Best Practices: Deterministic Replay, Cryptographic Receipts, Fail-Closed" — https://agenticrail.nz/blog/ai-agent-audit-log-best-practices/
[17] Microsoft Open Source Blog — "Introducing the Agent Governance Toolkit: Open-source runtime security for AI agents" — https://opensource.microsoft.com/blog/2026/04/02/introducing-the-agent-governance-toolkit-open-source-runtime-security-for-ai-agents/
[18] Prefactor — "Audit Trails in CI/CD: Best Practices for AI Agents" — https://prefactor.tech/blog/audit-trails-in-ci-cd-best-practices-for-ai-agents
[19] NeuralTrust — "A Deep Dive into the OWASP Top 10 for Agentic Applications 2026" — https://neuraltrust.ai/blog/owasp-top-10-for-agentic-applications-2026
[20] Auth0 Blog — "Lessons from OWASP Top 10 for Agentic Applications" — https://auth0.com/blog/owasp-top-10-agentic-applications-lessons/
[21] Knostic — "How to Secure AI Coding Assistants and Protect Your Codebase" — https://www.knostic.ai/blog/ai-coding-assistant-security
[22] GitGuardian Blog — "The State of Secrets Sprawl 2026: AI-Service Leaks Surge 81% and 29M Secrets Hit Public GitHub" — https://blog.gitguardian.com/the-state-of-secrets-sprawl-2026/
[23] CSA Research / Lab Space — "Vibe Coding Security Crisis: Credential Sprawl and SDLC Debt" — https://labs.cloudsecurityalliance.org/research/csa-research-note-ai-generated-code-security-vibe-coding-202/
[24] ISACA — "The Growing Challenge of Auditing Agentic AI" — https://www.isaca.org/resources/news-and-trends/industry-news/2025/the-growing-challenge-of-auditing-agentic-ai
[25] TrueFoundry — "Claude Code Governance: Building an Enterprise Usage Policy from Scratch" — https://www.truefoundry.com/blog/claude-code-governance-building-an-enterprise-usage-policy-from-scratch
[26] Galileo — "AI Agent Compliance & Governance in 2025" — https://galileo.ai/blog/ai-agent-compliance-governance-audit-trails-risk-management
[27] Nylas CLI — "Audit AI Agent Activity (Claude, Copilot, MCP)" — https://cli.nylas.com/guides/audit-ai-agent-activity
[28] OWASP — "OWASP Agentic Skills Top 10" — https://owasp.org/www-project-agentic-skills-top-10/