Priority
HIGH
背景
Python `subprocess` はデフォルトで親プロセスの環境変数を完全継承する。エージェントが実行する任意コマンド(`run-cmd`)に `ANTHROPIC_API_KEY` / AWS 資格情報 / `HF_TOKEN` 等が自動で流れ込み、子プロセスが `env` をログ出力すれば即座に LLM コンテキストへ到達しうる。GitGuardian 2025 は「long-lived secrets が違反の 60%」で、最小権限・最短寿命の原則から env allowlist 方式が必須。
現状(未検証 — 実装着手前に要確認)
- `autoforge/harness/tools/run_cmd.py` 相当の実装 未検証(ファイル配置自体を要確認)
- 未検証: `subprocess.run` 呼び出しで `env=` が明示されているか(デフォルトなら親プロセス env 全継承)
- 未検証: Docker 実行時の env 受け渡し(`docker-compose.yml:5,14,22` で `ANTHROPIC_API_KEY` / `GITHUB_TOKEN` 経由)
提案
- `run-cmd` で `env=` を明示し allowlist(`PATH`, `HOME`, `LANG`, プロジェクトが明示許可した key)のみ継承
- ステージ単位で env 注入を分岐: `Survey`/`Idea`/`Security` 等ピュア LLM ステージには外部インフラ資格を渡さない
- `edit` / `view` はクラウド資格から完全切り離し
- allowlist は `autoforge.yml` で宣言、実行時に diff を警告
完了条件
参考
Part of #17
Priority
HIGH
背景
Python `subprocess` はデフォルトで親プロセスの環境変数を完全継承する。エージェントが実行する任意コマンド(`run-cmd`)に `ANTHROPIC_API_KEY` / AWS 資格情報 / `HF_TOKEN` 等が自動で流れ込み、子プロセスが `env` をログ出力すれば即座に LLM コンテキストへ到達しうる。GitGuardian 2025 は「long-lived secrets が違反の 60%」で、最小権限・最短寿命の原則から env allowlist 方式が必須。
現状(未検証 — 実装着手前に要確認)
提案
完了条件
参考
Part of #17