Используйте autofix после того, как находка безопасности ограничена конкретным методом и, при необходимости, CWE. CodeGraph формирует предлагаемый unified diff и метаданные проверки. Текущие поверхности CLI, REST и MCP работают в режиме read-only: они возвращают предложения и never applies их к рабочей копии.
CLI: предложения из отчёта аудита
Запустите аудит с явной настроенной базой CPG:
python -m src.cli audit --db PATH --autofix --skip-llm-conclusion --skip-persistence
Аудит собирает находки безопасности и передаёт доступные свидетельства о taint-path движку autofix в режиме dry-run. Если в отчёте нет пригодных путей распространения данных, команда сообщит, что предложения сформировать нельзя. --skip-persistence отключает сохранение результатов аудита и снимков, но проверка актуальности всё ещё может обновить устаревшую базу CPG.
Команда печатает предложения, но не редактирует файлы. Если результат должен стать свидетельством ревью, сохраните его в явно заданное место вызывающей стороны.
REST: предварительный diff для одного метода
Текущий маршрут — POST /api/v1/security/autofix. Он использует контекст проекта, выбранный средой API.
curl -X POST http://localhost:8000/api/v1/security/autofix \
-H "Content-Type: application/json" \
-d '{
"method_name": "process_query",
"cwe": "CWE-89"
}'
method_name выбирает находки одного метода. cwe задаёт необязательный фильтр. Если совпадений нет, запрос успешно вернёт пустой список results и count: 0.
Не передавайте произвольный source_path. Если путь указан, маршрут сверит его с зарегистрированным каталогом исходников проекта и отклонит выход за эту границу.
MCP: предварительный diff для ассистента
Вызовите ролевой инструмент с нативными строковыми аргументами:
codegraph_security_autofix_preview(method_name="process_query", cwe="CWE-89")
Инструмент сам определяет базу среды исполнения. Агентский вызов не должен передавать сырой путь к базе.
Как читать ответ
Сформированный элемент может содержать:
file_pathиline_number— место предлагаемого изменения;strategyиconfidence— способ формирования и его оценку уверенности;validated— прошёл ли diff встроенную структурную проверку;cwe_id,vulnerability_typeиseverity— классификацию находки;explanation— причину предложения;diff_patch— unified diff для ревью.
Корректность исправления для продукта подтверждают сборка, точечные и регрессионные тесты, архитектурное ревью и одобрение AppSec. Поле validated: true фиксирует результат предварительной проверки.
Безопасное применение
- Сохраните исходную находку, ревизию и ссылку на свидетельство.
- Проведите
human reviewвсегоdiff_patch, включая окружающий код и границы доверия. - Воспроизведите уязвимость или добавьте падающий тест безопасности.
- Внесите минимальное согласованное изменение обычным процессом разработки.
- Запустите точечные и регрессионные тесты, затем повторите проверку безопасности.
- Получите заключение ответственной линии AppSec, прежде чем закрывать находку.
Отклоните предложение, если оно меняет поведение за пределами согласованной области, требует отсутствующую зависимость, ослабляет валидацию, скрывает симптом без устранения потока данных или не допускает проверки тестом.
Ошибки и границы полномочий
- Пустой результат показывает, что для выбранного метода и фильтра не создан предварительный diff. Отсутствие уязвимости проверяется отдельным security-анализом.
- Ошибка границы пути означает, что запрошенный корень исходников находится вне зарегистрированного проекта.
- Недоступность инструмента может быть ограничением профиля или ролевой политики. Не повторяйте вызов через удалённый псевдоним.
- Autofix не выполняет commit, push, одобрение или выпуск.
Поддерживаемые источники контракта
- Интеграция dry-run в CLI:
src/cli/analysis_commands/audit_commands.py - Запрос REST, граница путей и ответ:
src/api/routers/security_suite/security.py - Контракт предварительного MCP-вызова:
src/mcp/tools/security_suite/security.py - Движок autofix:
src/analysis/autofix/engine.py
Процесс работы с находками и границы свидетельств описаны в аудите безопасности.