エージェントが止まるとき

更新: 2026-08-30
codexclaude-codedockerfail-closed

サブエージェントに実装+検証をまとめて任せると、途中で環境が理由で進めなくなることがある。 そのときに何を返させるかを先に決めておかないと、レポートが信用できなくなる。

結論

指示に3値を持たせる。成功 / 失敗 / 未実施 を混ぜない。

検証を実行しようとする実行できたか成功 → 証跡を残す失敗 → 原因を書く未実施 → 止まる判断がつかないときは必ず「未実施」側へ倒す。PRも作らせない。
「実行して失敗した」と「そもそも実行できなかった」を別の値として返させる。

指示文にはこの一文を入れる。

未実施を成功扱いしない。実行できなかった検証は「未実施」と明記し、
PR作成まで進めずに現状をIssueへ書き出して停止すること。

停止したら新しいsub-issueを起こさせ、確認できた範囲対応案 を書かせる。 親Issueは OPEN のまま残す。ここでcloseさせると、未検証の変更が完了扱いで埋もれる。

実際に踏んだ環境エラー

Docker daemon への接続が権限拒否

エージェントからは「Dockerが使えない」としか見えないが、原因は複数ある。

症状実際の原因確認
daemon接続が拒否されるDocker Desktop が落ちているdocker info が返るか
起動しているのに未起動判定launchd実行時に PATH が足りないplist の EnvironmentVariables
コンテナは動くが遅い割り当てが小さいdocker info の NCPU / MemTotal

docker info --format '{{.ServerVersion}} {{.NCPU}} {{.MemTotal}}' を検証の前段に必ず置く。 返らなければその時点で未実施として止める。ここを省くと、 DBが必要なテストがタイムアウトで落ちて「テスト失敗」として報告されてしまう。

専用worktreeで npm ci が EPERM

worktreeを切って依存を入れ直す構成だと、node_modules が作られないまま先へ進むことがある。

ls -d <worktree>/<app>/node_modules   # No such file or directory なら依存は未導入

依存が無い状態では型検査もlintもfocused testも意味を持たない。 npm ci の完了を検証の前提条件(preflight)に含め、 失敗したらそこで止める。後続の結果を集めても全部ノイズになる。

既存の型検査・lintエラー

作業前から失敗しているものは、その回の変更と切り離す。 混ぜると「自分の変更が壊した」のか「元から壊れていた」のかが判定できず、 エージェントが直さなくていいものを直しはじめる。

作業開始時に一度走らせて、既存エラーの一覧をIssueへ貼っておく。

preflightに入れる項目

長い検証を任せる前に、この順で確認させる。

  1. package-lock.json の存在と、対象worktreeの node_modules
  2. docker info の応答(ServerVersion / NCPU / MemTotal)
  3. 必要なコンテナの healthy 状態
  4. 変更前の型検査・lintの結果(既存エラーの把握)

1つでも欠けたら未実施で停止。これを入れてから、 「動いていないのに通ったことになっている」レポートが出なくなった。

関連

WIKI一覧へ