# Запуск Codex из командной строки Для автора, у которого есть shell и установлен `codex`. Проверено на codex-cli 0.163.0 (Linux, 2026-10-17): первый запуск, продолжение по id, запись отчёта в обменный каталог. ## Перед первым запуском На новой машине и после обновления Codex проверь, что команды внутри песочницы вообще выполняются: ```bash codex sandbox -c 'sandbox_mode="workspace-write"' -- sh -c 'echo SANDBOX_OK' ``` На Linux отказ вида `bwrap: ... Failed RTM_NEWADDR` обычно значит, что AppArmor запрещает непривилегированные user namespaces. Это настройка машины, а не ревью: сообщи пользователю и сошлись на [требования песочницы](https://learn.chatgpt.com/docs/sandboxing#prerequisites). Работающий веб-поиск о песочнице ничего не говорит. ## Первый запуск ```bash # D — обменный каталог с готовым brief.md, S — каталог скилла cat "$D/brief.md" "$S/prompts/mandate.md" "$S/prompts/lens-code.md" \ > "$D/prompt.md" set -o pipefail cat "$D/prompt.md" | codex exec --json --strict-config --approve-for-me \ --add-dir "$D" -m -c 'model_reasoning_effort=""' \ -o "$D/final.md" - > "$D/log.jsonl" 2> "$D/err.txt" ``` - **Промпт — каналом через stdin** (`cat … | codex exec … -`): так он доходит в любой среде. Поток событий и ошибки — в файлы; в свой контекст читай только `final.md` и отчёт `REPORT`. - **`--approve-for-me`** даёт песочницу `workspace-write` и сам одобряет выход за неё: сеть, docker, команды вне каталога. Вместе с `-s` он не принимается. Шире — `danger-full-access` — ревьюеру не нужно. - **`--add-dir "$D"`** разрешает запись отчёта в обменный каталог. - **Модель и глубину задавай явно.** Иначе они берутся из `~/.codex/config.toml` и зависят от последней интерактивной сессии пользователя. На 2026-10 для ревью кода обычно лучше всего подходит `gpt-6.1-sol` с глубиной `high`. `gpt-6-astra` с `xhigh` сильнее и заметно дороже: бери её по просьбе пользователя или когда ошибка особенно дорога. Названия моделей быстро устаревают: при сомнении спроси пользователя. - **`--strict-config`** останавливает запуск при неизвестном ключе `-c`. Без него опечатка молча заменяется настройкой по умолчанию. ## Ожидание Ревью идёт от нескольких минут до получаса. Запускай команду фоном средствами своей среды: в Claude Code — Bash с `run_in_background`, без `&` внутри команды; среда разбудит тебя по завершении. - **id сессии** — в первой строке лога: `head -1 "$D/log.jsonl" | jq -r .thread_id`. Сохрани его сразу: по нему идут перепроверка и спасение, если процесс умер. - **Признак жизни** — рост `log.jsonl`. Долгая сборка или тесты внутри песочницы событий не пишут, поэтому застывший лог — повод посмотреть, а не приговор. - **Вердикт без находок** проверь по логу: работа это или отписка. `grep -c '"command_execution"' "$D/log.jsonl"` — число выполненных команд. Голое APPROVED при нуле команд перезапускай. ## Затраты Токены по каждому ходу пишутся в лог: `jq -c 'select(.type=="turn.completed") | .usage' "$D/log.jsonl"`. Стоимости в выводе нет. ## Следующие круги Узкая перепроверка или полный проход по новой версии — продолжением той же сессии. Что положить в поручение — в разделе «Следующие круги» SKILL.md. ```bash cat "$D/recheck-prompt.md" | codex exec resume --json --strict-config \ -m -c 'model_reasoning_effort=""' \ -o "$D/recheck-final.md" - \ > "$D/recheck-log.jsonl" 2> "$D/recheck-err.txt" ``` - **Только по явному id.** `--last` подхватит последнюю сессию, а при нескольких ревьюерах это может быть чужая. - Песочница и доступ к `$D` принадлежат сессии и сохраняются; ключей `-s`, `--approve-for-me` и `--add-dir` у `resume` нет. - Модель и глубину повтори явно — те же, что при первом запуске: иначе подставятся значения из конфига, а смена глубины внутри сессии сбрасывает кэш. ## Особенности ревьюеров Codex - Мандат и формат отчёта держат надёжно. - Бывает, требуют исправлений сверх цели задачи; в других прогонах все починки выходили соразмерными. Проверяй соразмерность как обычно. - Хорошо ловят уровень требований: недостающие критерии, наблюдаемость, «формально отчитаться можно».