## 要約 - #242 で `rm` の確認を減らそうとしたが,13 回の Codex のレビューで `rm` の判定に穴が出続けたため,#242 からは外して main の判定に戻した. - 前後のコマンドの組み合わせ (リンクの作成,`xargs` の置き換え,書き込み,変数の書き換え) で消える対象が変わるので,「この rm は安全」と言い切るのが難しい. - 決めること: 下の狭い案で進めるか,`rm` は確認のままにするか. ## 候補の案 | 案 | 中身 | |---|---| | A. コマンド全体が `rm` 1 つだけ | 前後に何もない (`;`,`&&`,`\|`,リダイレクト,代入なし) `rm` で,対象がすべて信頼できる一時領域の絶対パスを普通の文字だけで書いたもののときだけ許可.再帰削除は今までどおり拒否 | | B. 確認のまま | 何もしない.エージェントには `git rm` や一時ファイルを残す運用を勧める | ## これまでに見つかった穴の種類 (A でも塞ぐべきもの) - 引用・エスケープ・行継続・ブレース展開・zsh の `=name` や配列展開による,フックとシェルの読み違い - 同じコマンド内の書き込み,リンクの作成,`xargs` の置き換え,`HOME` などの書き換え - 一時領域のルート自体がリンクになっている場合 - git の判定 (パターン,フィルタ,assume-unchanged) — A では git の判定を使わない ## 受け入れ条件 - [ ] 案を決める - [ ] A にするなら,上の種類ごとに回帰テストがあり,Codex の adversarial review で high が出ない <details> <summary>経緯</summary> - #236 / #242.レビューの指摘の要約は #242 の会話にある. - 拒否のルール (`rm -r` など) は権限ファイルに戻してある. </details>
Activity