Codexの機密file除外論争、ignore fileだけでは足りない権限境界

OpenAI Codex issue #2847は一見すると単純なfeature requestだが、coding agentのsecurity問題の中心に触れている。提案はrepo-localな.codexignoreやglobal ignore fileにより、agentが読んだりmodelへ送ったりしてはいけないpathを明示する仕組みだ。.env、.env.*、*.pem、id_*、.aws/**、.ssh/**などが例として挙がっている。issueは2025年8月に開かれ、2026年6月28日時点でもopenのまま更新が続いている。

表面上は見慣れたignore fileの話に見える。ただしHNの議論はすぐに「listを作れば十分か」という問題へ進んだ。agentがshellを実行できるなら、read_file toolだけを止めても足りない。rgやgrepの結果にsecretが混ざることもあり、build logやtest output経由で機密文字列がmodel contextに入る可能性もある。

そのためコメントではUnix permission、container、devcontainer、低リスクworkspaceへのcopyといった低いlayerの隔離が繰り返し挙げられた。Codex processがそもそも機密fileを読めない状態にすべきだ、という考え方だ。別の見方では、coding agentを信頼しない人間が別accountでSSHしているものとして扱うべきだという話になる。ignore fileはUXやteam policyには効くが、それ自体をsecurity boundaryにするのは難しい。

issue本文も二つのuse caseを分けている。一つは機密dataがmodelへ送られるのを防ぐこと。もう一つは大きいfileや無関係なfileを除外してagent作業を効率化することだ。両者は似ているが、失敗時の重さが違う。効率化用のignoreは多少漏れても不便で済むが、secret保護用のignoreは一つの迂回経路でも致命的になり得る。

coding agentが実際の開発環境に入るほど、「modelに何を見せるか」はpromptではなくruntime boundaryの問題になる。ignore fileは必要なUXかもしれない。ただし機密file保護を本当に約束するには、filesystem permission、sandbox mount、container境界、credential proxyと組み合わせる必要がある。この議論の価値は、agent securityの責任層をはっきりさせた点にある。