Материал

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

Ни одна платформа "из коробки" не даёт:

  1. Reasoning trace — цепочку рассуждений агента до каждого tool call.
  2. Полную трассировку файлов, которые агент прочитал (не только тронул).
  3. Immutable, криптографически подписанный лог, не зависящий от инфраструктуры агента.
  4. Единый 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 account
  • agent_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 call
  • goal_state_id — текущее состояние цели (важно для детекции goal hijack)
  • decision_path — последовательность решений внутри сессии

4. Code change metadata (pre-merge)

  • pr_number, branch_name, base_branch
  • commit_sha (финальный)
  • files_changed_count, lines_added, lines_deleted
  • new_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 и список findings
  • dependency_advisory_check — результат проверки по GitHub Advisory Database или OSV
  • hallucinated_package_flag — проверка, что все добавленные пакеты реально существуют в registry
  • codeql_findings — если запускался CodeQL

6. Gate decision

  • gate_decision — ALLOW / BLOCK / REQUIRE_HUMAN_REVIEW
  • gate_policy_version — версия политики, применённой на этом gate
  • gate_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:

  1. Верифицирован agent_id — не generic service account, а уникальная identity агент-инстанса.
  2. permissions_granted соответствует scope задачи — агент не имел доступа к prod-credentials для feature-задачи.
  3. files_read не содержит чувствительных файлов за пределами объявленного scope (.env, secrets, production configs).
  4. new_dependencies проверены по advisory database; lock-файл обновлён; пакеты существуют в реестре (нет hallucinated packages).
  5. config_files_modified требует отдельного human review — это высокорисковый класс.
  6. secret_scan_result — пройден.
  7. sast_result — не содержит critical findings.
  8. reasoning_trace присутствует — агент обосновал каждое нетривиальное решение.
  9. gate_receipt_hash верифицируется — лог не был изменён после записи.
  10. 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/

Нужен такой же контроль в ваших изменениях и релизах?

Покажем пример такого замечания на вашем сценарии и соберём пилотный контур без лишней суеты.

Запросить пилот Все статьи
Дальше по теме

Ещё материалы

Все статьи
24 июня 2026 18 мин

Политика использования ИИ в команде разработки: как не опоздать, когда всё уже идёт

Если разработчики уже пишут код с ИИ ассистентами, политика нужна сегодня — а не после первого инцидента TL;DR Более 84% разработчиков уже используют или планируют использовать ИИ инструменты 1 , и большинство делают эт…

Открыть материал
23 июня 2026 16 мин

Регистрация и онбординг пользователей: где появляются первые уязвимости

Форма регистрации выглядит просто. За ней скрывается один из наиболее атакуемых периметров приложения. TL;DR Форма регистрации и онбординг флоу — это первая поверхность атаки, которую видит злоумышленник. Большинство уя…

Открыть материал
23 июня 2026 15 мин

Бизнес-логика и мошенничество в продукте: что проверять до запуска

Ваш продукт работает правильно. Но это не значит, что он работает безопасно. TL;DR Уязвимости бизнес логики — это не сломанный код, а сломанные правила: приложение делает именно то, что написано, но не то, что задумывал…

Открыть материал