## 背景 #656・#657 の実装とレビュー(L-37・H-27・H-28、2026-10-13)で見つかった、文書・CI・環境の小さな残りをまとめます。 関連:#502、#656、#657 ## 問題 1. **toolchain を `$HOME` の外に置く環境で、Bash の `cargo` が動かない**(#656 の前からある) - 子に渡す env の許可リストが `PATH`・`HOME`・`LANG`・`TERM` だけで、`RUSTUP_HOME`・`CARGO_HOME` を渡しません。rust の公式イメージのように toolchain を `/usr/local/rustup` 等に置く環境では、隔離の有無にかかわらず `cargo` が toolchain を見つけられません(L-37 の Docker で再現。隔離の中では `~/.rustup` を作ろうとして Permission denied)。 2. **GUI の delegate の単体試験が CI で走らない**:CI の GUI の job は `--test gui_server` だけを流し、`--bin gui_server` の単体試験(delegate に `--sandbox required` を渡す試験)を流しません。 3. **GUI の文書**:#502 の判断 1「GUI の delegate は `required`」で、隔離が使えない環境では GUI の実行が止まることを GUI の文書に書いていません(H-27 の F5)。 4. **macOS のワークスペースの資格情報は、名前を変えると読める**:#657 の読み取りの隔離は名前で判定するので、書き込めるワークスペースの中で `.env` 等を rename すると読めます(H-28。#657 で SECURITY.md に限界として明記)。閉じるかを判断します(例:ワークスペースの資格情報に `file-write*` の拒否も足し、rename と unlink を止める)。 5. **private registry の npm が隔離の中で失敗する**:home の `.npmrc` を拒否するためで、利用者の決定どおりです。`required` の run での失敗の実績を見て、registry のトークンを Bash 以外から渡す方法を検討します。 ## 根拠(develop `2ab48952`) - `src/bounded_process.rs:91`:env の許可リスト - `.github/workflows/ci.yml:97-98`:GUI の job は clippy と `--test gui_server` だけ ## 受け入れ条件 - [ ] 1:`RUSTUP_HOME`・`CARGO_HOME` を子に渡すかを決め(渡しても書き込みの許可は増えない)、toolchain を `$HOME` の外に置いたイメージで Bash の `cargo --version` が隔離の中で動くことを確かめた - [ ] 2:CI の GUI の job で delegate の単体試験が流れる - [ ] 3:GUI の文書に、隔離が使えない環境で止まることと、その理由を書いた - [ ] 4・5:対処するか、限界として残すかを決め、決定を文書に書いた - [ ] 字句検査、検証・受入・証跡のゲートを緩めていない。成長上限の baseline を上げていない ## 対象ファイル - `src/bounded_process.rs` - `.github/workflows/ci.yml` - `src/tools/os_sandbox/seatbelt.rs` - `SECURITY.md` - `docs/` の GUI の文書(ja/en) ## 参照 - L-37・H-27・H-28 の記録(ローカル):`workspace/tmp/1007/wave1/results/`
Activity
Kewton commentedon Oct 13, 2026
#658(PR #671)の追記:runtime の依存の導入も隔離の中で動くようになったため、
--offlineでない run でも、読み取りの隔離が home の~/.npmrcを拒否します。private registry を使う npm の依存の導入は失敗します。5 番の判断では、Bash だけでなく依存の導入の分も含めて、ワークスペースの.npmrcと token の扱いを決めてください(H-29)。