Код-ревью Middle Агенты в разработке обновлено
Код-ревью: скрипт запуска агента в CI
Вопрос
Скрипт запускает CLI-агента в CI, чтобы тот чинил упавшие тесты по тексту issue. Найдите проблемы.
#!/usr/bin/env bash
set -e
export GITHUB_TOKEN="$ADMIN_TOKEN"
export DATABASE_URL="$PROD_DATABASE_URL"
export AWS_SECRET_ACCESS_KEY="$DEPLOY_AWS_SECRET"
ISSUE_BODY=$(gh issue view "$ISSUE" --json body -q .body)
agent run \
--approval never \
--allow-commands "*" \
--network unrestricted \
--prompt "Почини тесты. Подробности: $ISSUE_BODY"
git add -A
git commit -m "fix by agent"
git push origin main
Коротко
Скрипт складывает худшее: недоверенный текст issue, полная автономия и широкие права с продовыми секретами. Правильно: агент в контейнере с тестовой базой и минимальным токеном, ограниченный список команд и сети, лимиты, а результат в отдельную ветку и PR на обязательное ревью.
Что должен найти ревьюер
- Безопасностьстрока 4Агент получает админский токен: любая инъекция из issue сможет менять настройки репозитория. Нужен токен только на создание ветки и PR.
- Безопасностьстрока 5Строка подключения к боевой базе в окружении агента: он может прочитать и изменить продовые данные. Для тестов нужна тестовая база.
- Безопасностьстрока 6Секрет деплоя доступен агенту без всякой нужды. Секреты, которые не нужны задаче, в окружение не передают.
- Безопасностьстрока 14Текст issue от внешних людей идёт прямо в промпт агента с полными правами: классическая косвенная prompt injection.
- Безопасностьстрока 12Без подтверждений, любые команды и неограниченная сеть: при инъекции агент выполнит что угодно и отправит данные наружу.
- Ошибкастрока 18Коммит и push сразу в main без PR, ревью и CI: результат агента никто не проверит, а сломанный main получат все.
- Ошибкастрока 16git add -A заберёт всё, что агент создал, включая временные файлы и возможные дампы с данными.
Разбор
Скрипт складывает худшее: недоверенный текст issue, полная автономия и широкие права с продовыми секретами. Правильно: агент в контейнере с тестовой базой и минимальным токеном, ограниченный список команд и сети, лимиты, а результат в отдельную ветку и PR на обязательное ревью.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.