К содержимому
Claude Code с 0:полный курс
Уровень 3 · Автопилот 8 мин Проверено автором · 12 окт. 2026 г. Сверено с Claude Code v2.1.287 · 12 окт. 2026 г.

Автономный запуск с лимитами

Запуск без присмотра делает только то, что ты разрешил заранее. Поэтому разрешай мало, а остальное ограничивай — минимальные права, строгая песочница, лимиты ходов и бюджета, запрет коммитов и оценка цены на маленьком куске.

Уровень 3 · 0 / 4 уроков0%

В прошлом уроке ты запустил Claude из скрипта. Теперь — запуск, который работает без присмотра, долго и с правками файлов. Главный принцип: такой прогон делает ровно то, что ты разрешил заранее. Значит, разрешай мало, а остальное ограничивай.

Пять рамок

  1. Минимальные права. Режим dontAsk отклоняет всё, что потребовало бы вопроса. Разреши только папки, которые задача правит, и одну команду, которую она запускает.
  2. Песочница. Пусть система ограничивает, что могут разрешённые команды, — и пусть прогон не стартует, если песочница недоступна.
  3. Лимиты. --max-turns ограничивает ходы, --max-budget-usd — примерную стоимость.
  4. Ворота проверки. Запрети git commit и git push. Результат останется в рабочем дереве, а коммитишь ты — после того как прочитал дифф.
  5. Оценка цены. Сначала прогони маленький кусок задачи и по нему поставь лимит бюджета.

Файл рамок

Рамки удобно хранить в отдельном файле, например .claude/bounded-run.json:

{
  "permissions": {
    "allow": ["Edit(./src/**)", "Edit(./test/**)", "Bash(npm test *)"],
    "deny": ["Agent", "Read(./.env)", "Read(./.env.*)", "Bash(git commit *)", "Bash(git push *)"]
  },
  "sandbox": {
    "enabled": true,
    "failIfUnavailable": true,
    "allowUnsandboxedCommands": false
  }
}
  • deny на Agent не даёт Claude передать работу , у которого может оказаться свой режим разрешений;
  • failIfUnavailable — не стартовать без песочницы;
  • allowUnsandboxedCommands: false — не повторять команду вне песочницы.

Запуск

claude -p "Добавь тест для одной непокрытой функции в src/links.js" \
  --setting-sources project \
  --settings .claude/bounded-run.json \
  --permission-mode dontAsk \
  --model sonnet \
  --max-turns 15 \
  --max-budget-usd 2 \
  --output-format json

--setting-sources project не подмешивает твои личные настройки — например, разрешение, сохранённое кнопкой «Да, и больше не спрашивать». В рамки попадает только то, что ты в них явно записал.

Когда лимит срабатывает, код выхода ненулевой, а в JSON subtype объясняет причину: error_max_turns или error_max_budget_usd. Поле total_cost_usd — оценка на стороне клиента, а не твой счёт.

Ты — ворота проверки

После прогона прочитай git status и git diff, включая сам файл рамок, сам запусти тесты и закоммить только то, что принимаешь. Для второго мнения попроси свежую сессию Claude проверить дифф в чистом контексте.

Мини-проверка

Прогон закончился с subtype success, тесты зелёные. Можно сразу пушить?

Осторожно

Защищённая папка .claude/ в режиме dontAsk недоступна для записи инструментами Claude — он не сможет ослабить собственные рамки. Но сам файл рамок ты пишешь руками: прочитай его после каждой правки так же внимательно, как код. Одна лишняя звёздочка в allow открывает больше, чем кажется.

Практика в терминале

Сначала запусти задачу с --max-turns 1 и посмотри subtype: error_max_turns — лимит работает. Потом запусти ту же задачу с --max-turns 15 и --max-budget-usd 2.

Рамки за минуту

Конструктор настроек соберёт рамки для запуска без присмотра: строгую песочницу, запрет коммитов и push, хук-охранник для .env.
Открыть конструктор с этим набором →

Проверь себя

Отвечено 0/3
Режим:

Зачем в правилах автономного запуска запрещать git commit и git push?

Как разумно выбрать значение --max-budget-usd для большой задачи?

Зачем в настройках песочницы для такого запуска ставить failIfUnavailable в true?

Выполни задание в терминале и ответь на вопросы, чтобы завершить урок.

📝 Мои заметки

Сохраняется автоматически в этом браузере · видно на странице «Заметки».

Задание

Убедись, что лимит действительно останавливает прогон: запусти задачу с --max-turns 1 и посмотри причину остановки. Потом запусти ту же задачу с разумными лимитами ходов и бюджета.

Tab дополнить · ↑ прошлые · Ctrl+L очистить · help команды

  • Не выполнено: Лимит ходов остановил прогон
  • Не выполнено: Запуск с лимитом бюджета
  • Не выполнено: Прогон в рамках лимитов завершился успешно

Вопросы и ответы по уроку

Зачем в правилах автономного запуска запрещать git commit и git push?

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

Как разумно выбрать значение --max-budget-usd для большой задачи?

Прогон куска даёт реальную оценку. Умножь её на размер задачи и оставь запас — так лимит и не обрежет работу, и не позволит улететь бюджету.

Зачем в настройках песочницы для такого запуска ставить failIfUnavailable в true?

По умолчанию без песочницы команды просто выполнятся без защиты. Для запуска без присмотра лучше упасть, чем тихо работать без границы.

Прогон закончился с subtype success, тесты зелёные. Можно сразу пушить?

Зелёные тесты не говорят, что изменения правильные. Ворота проверки — это ты: прочитать дифф, решить, закоммитить. Push был запрещён рамками специально.

Листай уроки клавишами ← → · поиск по ⌘K