Аудит кода
Аудит кода — экспериментальная функция.
Аудит кода — это проверка безопасности проекта, которую выполняет ваш локальный агент для программирования. Щёлкните проект в боковой панели правой кнопкой мыши и выберите «Экспериментальная функция» → «Аудит кода», затем «Новый аудит». В поле «Локальный помощник» выберите «Codex» или «Claude»; затем задайте значения в полях «Модель», «Глубина рассуждения» и «Область проверки» и нажмите «Начать аудит». На странице отчёта показан текущий этап сканирования. В разделе «Сеанс помощника» видны вызовы инструментов агента в исходном виде, его анализ и ожидающие запросы разрешений; отвечайте на запросы там, чтобы аудит мог продолжиться. Отчёт появляется, когда Codex Security окончательно фиксирует свои результаты.
Аудит выполняется на компьютере, где находится проект, и использует установленный интерфейс командной строки (CLI) выбранного агента с уже настроенными входом, конфигурацией и обработкой разрешений («Используются вход в учётную запись и настройки локального помощника. Отдельная настройка API модели не требуется.»). VelaTerm добавляет MCP-сервер Codex Security только для сессии аудита; остальные ваши MCP-серверы остаются без изменений, а сам VelaTerm не вызывает API модели. CLI должен быть установлен, в нём должен быть выполнен вход, а лимиты аккаунта не должны быть исчерпаны. Собственная конфигурация CLI может задавать поставщика модели; VelaTerm её не изменяет.
Пункт «Аудит кода» также доступен для коллекций. Коллекцию без корневой папки проверить нельзя.
Модели и глубина рассуждения
Список моделей тот же, что и в окне создания сессии для этого агента, и в нём учитываются аргументы запуска агента по умолчанию, поэтому список соответствует тому, как будет выполняться аудит. «Модель по умолчанию» оставляет выбор за агентом. Поле «Глубина рассуждения» становится доступным, когда выбрана модель, поддерживающая уровни глубины рассуждения; значение «Автоматически» оставляет выбор за агентом. Если список не удалось загрузить, появляется кнопка повторной попытки. Сервер проверяет явно заданные сочетания, а аудит сохраняет выбранные значения для истории и последующих запусков. Наличие модели в списке не означает, что ваш аккаунт может её использовать. Ошибки поставщика, в том числе исчерпание лимитов использования, завершают аудит с ошибкой.
Новые аудиты запрашивают анализ на языке интерфейса. Поля протокола, пути, идентификаторы и цитируемые фрагменты исходного кода остаются без изменений.
Интеграция с Codex Security
VelaTerm включает в комплект публичный выпуск @openai/codex-security@0.1.26 под лицензией Apache-2.0; манифест его плагина имеет версию 0.1.95, и страница нового аудита показывает обе версии. В комплект входят оригинальные навыки, справочные материалы, схемы, сценарии, среда выполнения и лицензия, а файл UPSTREAM.json содержит источник пакета, значение для проверки целостности и хеши файлов.
Каждый новый аудит регистрирует полноценное сканирование в оригинальной рабочей среде Codex Security. Агент читает входной навык из комплекта и использует оригинальные инструменты MCP и формат результатов. Записи, созданные прежним, независимо реализованным пакетным процессом, остаются доступными для чтения и помечены как «Аудит прежнего формата · Эта запись создана без процесса Codex Security.»
Оба агента используют один и тот же оригинальный процесс. Публичный SDK для TypeScript управляет средой выполнения Codex и не предоставляет исполнителя для Claude Code, поэтому VelaTerm подключается через оригинальный MCP-сервер и локальную рабочую среду. Поддержка Claude Code — это адаптер VelaTerm, а не заявление авторов Codex Security об официальной поддержке Claude.
Для работы среды выполнения нужны Node.js в PATH в версии, которую поддерживает пакет Codex Security, и Python 3.10 или новее; для Python 3.10 также нужен пакет tomli, который в Python 3.11 и новее заменён встроенным модулем tomllib. VelaTerm проверяет ресурсы из комплекта и распаковывает их в свой каталог данных. В конфигурацию Codex или Claude он их не устанавливает.
Область проверки и ход работы
- Весь репозиторий запускает оригинальное стандартное сканирование (Standard) по неизменяемому снимку цели с учётом политики безопасности репозитория.
- Каталог или файл запускает сканирование Standard с точным значением в поле «Относительный путь». Чтобы понять цепочку вызовов, агент может читать и другие исходные файлы, но это не означает, что эти области прошли полный аудит.
- Изменения рабочего дерева запускает оригинальный навык проверки изменений для неизменяемого набора изменений Git. В него входят проиндексированные, непроиндексированные и неотслеживаемые изменения, которые поддерживает оригинальный механизм определения цели, а для удалённых файлов сохраняются доказательства из исходного состояния.
Сканирование Standard читает skills/security-scan/SKILL.md и references/core-scan.md. Оно выполняет предварительные проверки, независимый анализ исходного состояния и архитектуры, исследования с привязкой к исходному коду, контрольные точки для потенциальных находок, анализ контрдоказательств, подтверждение находок и сверку покрытия. Если агент поддерживает независимых исполнителей, они используются; в противном случае применяется оригинальный последовательный резервный режим, и его ограничения должны быть указаны. Одна лишь настройка числа исполнителей не доказывает, что независимые исполнители действительно работали.
Аудит изменений рабочего дерева читает skills/security-diff-scan/SKILL.md. Он закрепляет цель, строит модель угроз, подготавливает и перечисляет элементы для проверки, находит потенциальные уязвимости, подтверждает их, анализирует пути атаки и передаёт черновик результата на завершение. Проверка только текущего содержимого изменённых файлов не заменяет этот процесс.
Оригинальная рабочая среда принимает в качестве области проверки только каталоги. Чтобы выбор файла работал, установленная среда выполнения применяет два точечных изменения, хеши которых записаны: существующий файл допускается в качестве области проверки и считается одним элементом снимка. Оригинальные файлы в комплекте не изменяются, а установленный файл ADAPTER.json содержит как исходные, так и адаптированные хеши. Выбор файла никогда не превращается в сканирование всего его каталога.
Инструкции аудита запрещают правку исходного кода, исправления, публикацию и изменение конфигурации агента. Собственные разрешения агента на использование инструментов продолжают действовать. Эти инструкции не являются изолированной средой на уровне операционной системы. При подтверждении находок нужно указывать, что именно было проверено, а находка статического анализа не означает, что эксплойт был воспроизведён («Только статическая проверка. Заявленное покрытие не гарантирует обнаружения всех уязвимостей. Динамическое воспроизведение атак не выполняется.»).
Отчёты, покрытие и отмена
Основными результатами служат оригинальные файлы scan-manifest.json, findings.json и coverage.json. Оригинальный модуль завершения проверяет и фиксирует их, а затем создаёт удобочитаемый отчёт. VelaTerm импортирует эти файлы и проверяет расположение и точные строки исходного кода для каждой находки, считая окончания строк LF и CRLF равнозначными. Корректная структура и совпадение строк исходного кода сами по себе не доказывают, что находку можно использовать для атаки. Если доказательства в исходном коде не совпадают, аудит остаётся в статусе «Ошибка», а его находки не принимаются как подтверждённые. Зафиксированный оригинальный отчёт остаётся доступным, а при экспорте в Markdown сбой проверки указывается в начале, без изменения самого отчёта.
Перед фиксацией VelaTerm проверяет пути, диапазоны строк и фрагменты черновика тем же средством проверки, что и при импорте. Если доказательства не совпадают, сканирование остаётся незафиксированным, а агент получает сведения о том, какие места нужно исправить. Затем инструмент завершения Codex Security создаёт и фиксирует отчёт. Эта проверка никогда не переписывает фрагменты, не удаляет находки и не изменяет зафиксированные результаты. При импорте проверка повторяется, поэтому последующие изменения исходного кода не могут незаметно превратить недействительные доказательства в успешный результат.
Покрытие определяется по оригинальным записям проверки и принятым решениям, а не по числу файлов, которые агент, по его словам, прочитал. Нерешённые потенциальные находки, отложенная работа, исключения и предупреждения о завершении остаются видимыми. Зафиксированное сканирование с неполным покрытием отображается как «Частичное покрытие». Даже полное покрытие не гарантирует, что найдены все уязвимости.
Если агент завершает ход, а у сканирования ещё есть незавершённая работа, VelaTerm продолжает ту же сессию и то же сканирование, сохраняя уже полученные находки и результаты исполнителей. Запросы разрешений остаются ожидающими («Требуется разрешение или ввод»), а отмена или ошибка поставщика останавливает автоматическое продолжение. Если три хода подряд завершаются без каких-либо изменений в ходе проверки, находках или покрытии, аудит останавливается с ошибкой незавершённого сканирования и сохраняет свои контрольные точки.
На вкладке «Отчёт» показаны сохранённые находки, доказательства в исходном коде и ограничения покрытия. У каждой находки есть собственный URL; для неё показаны путь атаки, способ подтверждения и вывод (если они указаны), рекомендации по исправлению и приведённые в отчёте фрагменты исходного кода; прежде чем считать эти фрагменты проверенными, посмотрите статус аудита. На вкладке «Артефакты отчёта» хранятся полный отчёт, созданный Codex Security, и идентификатор сканирования. Для выполняемого сканирования показываются версии оригинального пакета и плагина, фактический этап, ход работы и предупреждения; пока нет зафиксированного отчёта, вместо пустой оценки показываются сведения о ходе работы и контрольных точках. В разделе «Сеанс помощника» обычное поле сообщения и откат отключены, чтобы посторонний ход не мог заменить аудит; запросами разрешений по-прежнему можно пользоваться.
«Отмена» останавливает оригинальное сканирование и агента. Сохранённые контрольные точки остаются доступными, если оригинальная рабочая среда может их зафиксировать, и сохраняют статус отменённого или завершившегося ошибкой аудита. Результаты, поступившие позже, не могут возобновить отменённый аудит. После перезапуска VelaTerm сверяет состояние с Codex Security: завершённый зафиксированный результат можно импортировать, а незавершённый запуск помечается как «Прерван», и сохранённые им файлы можно отличить от завершённого результата.
«Начать аудит» в существующей записи создаёт новое сканирование текущей цели с сохранёнными агентом и параметрами. Эта кнопка не возобновляет остановленный ход модели и не использует повторно прежнее заключение.
История аудитов, форма нового аудита, подробности отчёта и сессия агента открываются по собственным URL, поэтому их можно открыть напрямую, обновить и переходить между ними кнопками «Назад» и «Вперёд» в браузере. На узких экранах история и подробности показываются как отдельные представления.
Экспорт и ограничения
«Экспорт отчёта» предлагает форматы Markdown и JSON. Экспорт в Markdown содержит оригинальный отчёт, если он есть; в противном случае экспорт явно обозначен как запись незавершённого сканирования. Экспорт в JSON содержит все импортированные данные вместе с собственными метаданными VelaTerm. В папке оригинального сканирования также хранятся созданный файл SARIF и другие файлы. Экспортированные файлы могут содержать фрагменты исходного кода и сведения об уязвимостях, поэтому передавайте их с осторожностью.
Этот интерфейс поддерживает аудит Standard и аудит изменений рабочего дерева. Другие навыки из комплекта, например глубокое сканирование, исправление, проверка исправлений и отслеживание задач во внешних системах, хранятся как оригинальные ресурсы, но недоступны в виде отдельных действий. Аудит не применяет исправления, не публикует находки, не создаёт задачи и не открывает запросы на слияние.
Диагностика
Сервер записывает жизненный цикл аудита и сведения об этапах Codex Security в runtime-*.log в каталоге журналов приложения. VLX_LOG_DIR задаёт общее расположение; если эта переменная не задана, расположение событий аудита задаёт VLX_SECURITY_LOG_DIR. VLX_SECURITY_LOG_LEVEL=error оставляет только сбои, а off отключает эти события. Запросы и ответы описываются размером и дайджестом SHA-256; полный исходный код, учётные данные и полные ответы ИИ в журнал не копируются, а исходные сообщения поставщика не сохраняются. Пользовательские названия моделей заменяются анонимными идентификаторами, действительными только в текущем процессе. Число токенов, если оно доступно, отражает суммарный расход за сессию. Диалог агента сохраняет свою обычную запись.
Если аудит завершился ошибкой, прочитайте объяснение поставщика в отчёте или откройте раздел «Сеанс помощника». Прежде чем запускать новый аудит, устраните проблемы со входом, средой выполнения, разрешениями или лимитами аккаунта. Подключённый MCP-сервер показывает лишь, что инструменты доступны; он не означает, что модель завершила сканирование.
Материалы Codex Security: обзор CLI, справочник по CLI, открытый исходный код.