背景 / 症状
autopilot worker(claude セッション)が 許可プロンプトで停止する(例: #891 の review worker が
Use skill "code-review"? → さらに Dynamic workflow を実行するか(トークン大量消費の警告つき)
で停止し、人間の介入が必要になった)。worker は非対話で動くべきなので、これは運用を止める。
調査で確定した制約
- root では
bypassPermissions(= --dangerously-skip-permissions)が使えない:
--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons。
worker はコンテナ内 root で動くため、「全許可の auto mode」は不可。
- 現状の worker は
--permission-mode acceptEdits。編集は自動許可されるが、Skill 実行・Workflow・
allowedTools 外の操作は許可プロンプトが出る → 停止する。
- 直接の引き金は
autopilot-review プロンプトが /code-review(code-review skill)を起動し、
それが 動的マルチエージェント Workflow を起動しようとしたこと。許可プロンプト+トークン過大の二重問題。
目的
root で動く worker が 許可プロンプトで停止しないようにする(= root で可能な範囲の auto mode)。
併せて トークンを浪費する動的 workflow を worker が起動しないようにする。
変更方針
1. review/verify プロンプトから動的 /code-review workflow を外す(最優先)
autopilot-review.md(および必要なら autopilot-verify.md)から /code-review skill の起動指示を削除し、
軽量なインライン敵対的レビュー(worker が既に手動で実施しているもの)に統一する。
- これで skill 許可プロンプトも Workflow 許可プロンプトも token 浪費も無くなる。
- どうしても機械的レビューを併用したい場合でも、動的 workflow は使わない(単発の観点チェックに留める)。
2. worker の permission allowlist を注入(root で bypass 不可の代替)
buildClaudeCommand(既に usage 用 --settings を注入済み)に、permissions.allow を追加して
worker が使う操作を事前許可する: Bash, Edit, Write, Read, Glob, Grep, WebFetch 等。
(acceptEdits と併用。これで想定内操作の許可プロンプトで止まらない。)
Workflow は allow に入れない(トークン保護。1 の変更で worker はそもそも起動しない想定)。
- allowlist は worker の --settings に限定(人間や他セッションの設定に影響しない)。
3. セキュリティ注記
- root + allowlist は「全許可(bypass)」ではなく 限定許可。devpod は隔離 + egress allowlist 前提
なので、worker が使う既知ツールの事前許可は許容範囲。docs/autopilot/ に方針を明記。
制約 / 注意
- bypassPermissions は使えない(root 拒否)。allowlist 方式で実装すること。
- 許可を広げすぎない(worker が実際に使うツールに限定)。特に Workflow は入れない(token)。
- 音/autoplay の実 Chrome 確認など、そもそもホスト引き継ぎのものは対象外。
DoD
背景 / 症状
autopilot worker(claude セッション)が 許可プロンプトで停止する(例: #891 の review worker が
Use skill "code-review"?→ さらにDynamic workflow を実行するか(トークン大量消費の警告つき)で停止し、人間の介入が必要になった)。worker は非対話で動くべきなので、これは運用を止める。
調査で確定した制約
bypassPermissions(=--dangerously-skip-permissions)が使えない:--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons。worker はコンテナ内 root で動くため、「全許可の auto mode」は不可。
--permission-mode acceptEdits。編集は自動許可されるが、Skill 実行・Workflow・allowedTools 外の操作は許可プロンプトが出る → 停止する。
autopilot-reviewプロンプトが/code-review(code-review skill)を起動し、それが 動的マルチエージェント Workflow を起動しようとしたこと。許可プロンプト+トークン過大の二重問題。
目的
root で動く worker が 許可プロンプトで停止しないようにする(= root で可能な範囲の auto mode)。
併せて トークンを浪費する動的 workflow を worker が起動しないようにする。
変更方針
1. review/verify プロンプトから動的
/code-reviewworkflow を外す(最優先)autopilot-review.md(および必要ならautopilot-verify.md)から/code-reviewskill の起動指示を削除し、軽量なインライン敵対的レビュー(worker が既に手動で実施しているもの)に統一する。
2. worker の permission allowlist を注入(root で bypass 不可の代替)
buildClaudeCommand(既に usage 用--settingsを注入済み)に、permissions.allowを追加してworker が使う操作を事前許可する:
Bash,Edit,Write,Read,Glob,Grep,WebFetch等。(
acceptEditsと併用。これで想定内操作の許可プロンプトで止まらない。)Workflowは allow に入れない(トークン保護。1 の変更で worker はそもそも起動しない想定)。3. セキュリティ注記
なので、worker が使う既知ツールの事前許可は許容範囲。
docs/autopilot/に方針を明記。制約 / 注意
DoD
/code-reviewworkflow を起動しない(インラインレビューに統一)permissions.allowは worker の--settingsにのみ注入され、人間の設定に影響しないWorkflowは許可に含めない(トークン浪費防止)settings.jsの注入をユニットテストで担保(allow リストが --settings に入る)node --test(tools/autopilot)が緑docs/autopilot/に「root では bypass 不可 → allowlist 方式」の方針を追記