世界を動かす技術を、日本語で。

OpenAI Codexの機密ファイル除外方法に関する問題は未解決のまま

2026年6月28日原文(github.com)

概要

  • ファイルやパス を明示的に除外する仕組みの提案
  • リポジトリ単位 および グローバル単位 での設定ファイル運用
  • チームやリポジトリ で共有・再現可能な構成
  • ユーザーごとのデフォルト設定 もサポート
  • セキュリティ効率化 の両立を目指す

ファイル・パス除外機能の提案

  • .codexignore 等の設定ファイルによる明示的な除外機構
    • リポジトリローカルの .codexignore ファイル
    • ユーザーグローバルな ignoreファイル
  • 除外例
    • .env, .env. *(環境変数ファイル)
    • .pem, id_ *(秘密鍵ファイル)
    • .aws/, .ssh/ (認証情報ディレクトリ)
  • node_modules/ 等は検索対象としつつ、 .env などは絶対に送信・読込禁止
  • 設定の決定論的動作
    • 設定ファイルを チームやリポジトリ で共有可能
    • ドキュメントや慣習に頼らず明示的な運用
  • ユーザーごとのデフォルト設定 もサポートし、柔軟な運用が可能

関連背景と動機

  • #205 Issue にて2つの主要ユースケースが浮上
    • 機密データの誤送信防止
    • 巨大ファイルや無関係ファイルの除外
  • Rust実装(codex-rs) への移行で一時クローズ
    • 2025-08-28時点で codex-rs に同等機能は未実装
  • 議論再開と設計収束 の呼びかけ
    • 安全性と利便性の両立を目指す実装提案
    • コントリビューション および テスト への積極的な参加意思

今後の設計・実装に向けて

  • 設定ファイル形式の検討
    • .gitignore に近い書式が望ましい
    • 優先順位や継承関係 の明確化
  • 既存ツールとの連携
    • 例えば .gitignore.dockerignore との整合性
  • セキュリティ要件の明文化
    • 誤って除外漏れが起きない仕組み
  • ユーザー・チームの運用フロー
    • 設定ファイルの 共有・管理方法 のガイドライン策定
  • フィードバックループの確立
    • 実装後の ユーザー意見収集、改善サイクル

実装・コントリビューションへの参加表明

  • 実装およびテスト への積極的な貢献意志
  • コミュニティでの 設計議論 への参加
  • 安全・効率的な運用 を目指したフィードバック提供

Hackerたちの意見

今すぐできること:codexを実行しているユーザーがファイルを読めないようにファイルの権限を変更するか、ファイルをマウントせずにコンテナ内でcodexを実行すること。そうしないと、エージェントがうっかりそれらをアップロードできちゃうよ。「rg foo」を実行したときに、そのファイルの中に「foo」という文字列が含まれてたらどうなる?ツールの出力がアップロードされて、ファイルの内容も含まれちゃう。だから、唯一の解決策はcodexプロセスがそのファイルにアクセスできないようにすること。つまり、コンテナを使うか、Unixの権限を使うか、ファイルを削除するかだね。これらはすでにできることだと思う。おそらく、これが解決されていないのは、人々がbashツールの使用にも適用されることを期待しているからだと思う。「read」や「edit」ツールだけじゃなくて、エージェントが「make」を呼び出したときにファイルがアクセス可能であることを期待しているから、完璧に解決するのが不可能になってるんだよね。

そう、これは数十年前に解決されたことだよ。人間があなたのファイルを読むのをどうやって止める?chmod 600だよ。

AIエージェントは、そういったファイルにアクセスするための別の手段を探ることを忘れないでね。https://news.ycombinator.com/item?id=48348578

おそらく、これが解決されていないのは、人々がbashツールの使用にも適用されることを期待しているからだと思う。「read」や「edit」ツールだけじゃなくて、エージェントが「make」を呼び出したときにファイルがアクセス可能であることを期待しているから、完璧に解決するのが不可能になってるんだよね。それに、データ収集を防ぐ機能を追加する理由は何?そのデータが会社をさらに価値のあるものにするし、今の政府からいい取引をもらえるかもしれないのに。

その通りだね。Codexがこれを強制すべきだという考えは、セキュリティの境界を間違ったレイヤーに置いているよ。もしコードが何かにアクセスできないようにしたいなら、アクセスできないようにすればいいんだ。

エージェントをサンドボックス化してないなら、君のコンピューター上のすべてが露出するのを待ってる状態だよ。ファイルの権限で守れると思うのは、ちょっと甘すぎるよ。

サンドボックス化は解決済みの問題だね。エージェントを実行するためのファイアクラッカーインスタンスを提供している業者はたくさんいるよ。解決すべき問題は、コーディングエージェントのタスク特有の最小権限バージョンをどう定義するかだね。

確かにそうなんだけど、_どんな_ツールの出力(例えばstdoutや手作りツール)とLLMの間には、ハーネスの中に別のレイヤーがあるんだ。ツールがファイルを読むことはできるけど、エージェントのハーネスが出力を修正してLLMに返す前に、内容がファイルの内容と一致したら削除することもできる。Plotly Studioでは、ユーザー入力の文字列のエントロピーをチェックして、高エントロピーの文字列を「潜在的なクレデンシャル」としてフラグ付けして、ユーザーに知らせてる。これには回避策もあるけど、LLMはツールを使ってファイルの内容を直接読むのとは違う方法で読むことができるから、エージェントのハーネスレイヤーはツールの出力とLLMのリクエストの間で決定論的なロジックを許可しているってことだね。

今すぐできるよ:Codexを実行するユーザーがファイルを読めないようにファイルの権限を変更するか、ファイルをマウントせずにコンテナ内でCodexを実行すること。これはかなり不便だね。私は、通常のユーザーコンテキストの制限されたバージョンでコーディングエージェントを実行したいんだ、別のマシンみたいに動くものじゃなくて。 > モデルが「rg foo」を実行したら、そのファイルの一つに「foo」という文字列が含まれてたらどうなるの?ツールの出力がアップロードされて、その中にファイルの内容が含まれるよ。Codexがサンドボックス内でrgを実行して、サンドボックスがfooを読めないってこと。なんでこのモデルがこんなに理解しづらいの?Codexはすでにbwrapやシートベルトなどのサンドボックスの下でさまざまなコマンドを実行してる。私はCodexをサンドボックス内で全て実行するように拡張しただけ。エスカレーションは、コマンドをサンドボックス内で実行するかどうかの問題じゃなくて、モデルが要求したことに対してどのサンドボックスポリシーを適用するかの問題だよ。 > 唯一の解決策は、Codexプロセスがそれらのファイルにアクセスできないようにすることだ。これは違うよ。制限はモデルが実行するツールにのみ適用されるべきで、Codexプロセス自体には適用されない。ハーネスとそのツールの間にプロセスとサンドボックスの境界を常に挿入できる。Codexはほとんどの時間でこの境界を挿入してるし、私はそれを常に行うようにCodexを拡張したんだ、ファイル読み取りツールみたいなものでもね。うまくいってるよ。 > これが解決されていないのは、主に人々がbashツールの使用に適用されることを期待しているからだと思う。そうだよね?シェルツール[1]に適用するのは簡単だよ。実際、サンドボックスを非シェルツールに適用する方が難しい。概念的には難しくないんだ:サンドボックスポリシーを定義して、許可されていることとそうでないことを書き出して、OSレベルの軽量サンドボックスツールを使ってモデルが行うすべてをこのポリシーでフィルタリングすればいいだけ。マジで、そんなに難しくないよ。Codexプロセス自体をサンドボックスする必要もないし。なんで人々がそれをする必要があると思っているのか、全くわからない。モデルには、CodexというPOSIXプロセスに任意のことをさせる能力はないからね。[1] ほとんどのユーザーがzshを使っているのに、「bashツール」と呼ぶのは拒否するよ。

人々はそのファイルにアクセスできることを期待している、つまりエージェントが「make」を呼び出すと、完璧に解決するのが不可能になる。 エージェントがファイルにアクセスできない状態で、指定されたコマンドを実行できるようにsetuidを使う手もあるよ。

なんか詐欺っぽいな。これってどう機能するの?エージェントが開発しているアプリはファイルにアクセスする必要があるから、アクセスをブロックすることはできないよ。read_fileがアクセスできないからって(今のハーネスは.envファイルの読み取りを防いでると思うけど)、内容がモデルに見られないわけじゃないからね。

こんな無意味な機能を実装しないことを願ってる。LLMの予測不可能な性質を考えると、ただ人々に偽の安心感を与えるだけだからね。こんなこと、どうやって強制できるの?人々は自分のシステムがすでに提供しているツールの使い方を学ぶべきだよ。つまり、chmodを使うことだね。

Hacker Newsで議論の続きを見る