Код-ревью 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 на обязательное ревью.

Что должен найти ревьюер

  1. Безопасностьстрока 4
    Агент получает админский токен: любая инъекция из issue сможет менять настройки репозитория. Нужен токен только на создание ветки и PR.
  2. Безопасностьстрока 5
    Строка подключения к боевой базе в окружении агента: он может прочитать и изменить продовые данные. Для тестов нужна тестовая база.
  3. Безопасностьстрока 6
    Секрет деплоя доступен агенту без всякой нужды. Секреты, которые не нужны задаче, в окружение не передают.
  4. Безопасностьстрока 14
    Текст issue от внешних людей идёт прямо в промпт агента с полными правами: классическая косвенная prompt injection.
  5. Безопасностьстрока 12
    Без подтверждений, любые команды и неограниченная сеть: при инъекции агент выполнит что угодно и отправит данные наружу.
  6. Ошибкастрока 18
    Коммит и push сразу в main без PR, ревью и CI: результат агента никто не проверит, а сломанный main получат все.
  7. Ошибкастрока 16
    git add -A заберёт всё, что агент создал, включая временные файлы и возможные дампы с данными.

Разбор

Скрипт складывает худшее: недоверенный текст issue, полная автономия и широкие права с продовыми секретами. Правильно: агент в контейнере с тестовой базой и минимальным токеном, ограниченный список команд и сети, лимиты, а результат в отдельную ветку и PR на обязательное ревью.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме