最近 LLM CLI(Codex / Claude Code / Gemini CLI など)をいじっていて、「自動実行」は二択(毎回確認するか、完全に放任するか)であるべきではないと感じました。Codex を例にすると、自動化をより実用的な 2 つのモードに分けています:
1)制御された自動化:--full-auto(自動だが境界あり)
要点は「プロジェクト内は許可、越境はブレーキ」:
- ワークスペース内ではファイル変更やコマンド実行を自動で行い、頻繁な確認を減らす
- ワークスペース外のファイル(例:
~/.zshrc、/etc/hosts)やネットワークアクセスが関わるときは、止まって確認を求める
日常のメイン開発マシンに向いています:効率が高く、重要なリスクポイントも制御可能です。
2)限界自動化:--dangerously-bypass-approvals-and-sandbox(--yolo)
要点は「承認をスキップ + サンドボックスを無効化」:
- 聞かない、止めない、ほぼ全開放
- リスクはコードを壊すこと(これはロールバック可能)だけでなく、システム設定、ソフトウェアのインストール、ネットワーク経由の依存関係取得など、Git が管理できない操作にあります
Docker/仮想マシン/使い捨て環境で短時間だけ使い、使い終わったら破棄することだけを推奨します。メインマシンや本番環境では有効にしないでください。
補足:ポップアップを減らしたい=サンドボックスを切る、ではない
単に確認が多すぎて嫌なだけなら、workspace のサンドボックスは維持しつつ、承認ポリシーだけ調整できます(例えばプロジェクト内はあまり聞かず、越境は引き続きブロックする)。
一言結論
日常は「制御された自動化」、実験のときだけ「YOLO」;サンドボックスは可能なら切らない、承認も可能なら切らない。