既存プロジェクトの構成や不具合を調べたい。でも、コードの修正、設定変更、インストールはしてほしくない。そんなときは、調査の依頼文と、変更を制限する権限の両方を用意します。Codexの読み取り専用とClaude CodeのPlanモードは、名前が似ていても同じ仕組みではありません。

読む → 根拠を示す → 提案を受け取る

Codex

read-onlyと承認方針を確認

アプリ・IDEでは設定と会話の権限表示を確認。CLIでは起動オプションを指定し、ローカルコマンドの書き込みを制限します。

Claude Code

Planを基本に、必要ならツールも限定

調査と計画を行い、通常はソース編集をブロック。ただし起動時のバイパス状態や、利用可能なコマンド・外部ツールに注意が必要です。

ここで守りたいのは対象プロジェクトのソースです。会話履歴・ログ・計画ファイルの保存まで含めて、PCへの書き込みが一切なくなるという意味ではありません。

2026年10月9日にOpenAIとAnthropicの公式文書を照合しています。本記事の起動例は実機で実行していません。製品の仕様として確認した範囲と、ユーザーの環境で確認が必要な範囲を分けて案内します。

Codexアプリ・IDE

設定画面と共有設定を確認。承認メニューだけで判断せず、ファイルの書き込み制限を確認します。

Claude Desktop・VS Code

画面でPlanを選ぶ。新しい会話でもPlanになるかは、別に確認が必要です。

CLI・Web・スマホ

Codex CLI、Claude Code CLI、ClaudeのWeb・スマホへ。実行先の環境も確認します。

1. 「変更しないで」と権限制限の違い

例えば「ログイン処理の問題点を調べて」と頼むと、調査の後に修正まで進んでほしいのか、問題点の報告で止めてほしいのかが曖昧です。「修正しないで」と依頼すれば目的は伝わりますが、それだけで編集ツールやシェルの書き込み能力が消えるわけではありません。

目的を伝えることと、実行を止めることを分ける

依頼文

何をしてほしいか

「調査と助言のみ。実装しない」と指定。報告の形式や終了条件も決めます。

製品の権限制御

どのツールを使わせるか

Planやツールの限定で、実装に使う操作を制限。承認やモード変更で範囲が変わる条件を確認します。

実行環境の制限

書き込み先をどう守るか

サンドボックスやOSの権限で、実際の書き込みを制限。対象となるプロセスと例外を確認します。

上の層だけで下の層を置き換えることはできません。機密性が高い対象では、許可する読み取り範囲も別に決めます。

Claude Codeの公式文書も、プロンプトやCLAUDE.mdはモデルが何をしようとするかに影響する一方、許可される操作は権限システムが決めると説明しています。CodexのAGENTS.mdに禁止事項を書く場合も、実際の権限との役割を区別してください。出典:Claude Codeの権限。

2. Codex:アプリ・IDE・CLIの設定

デスクトップ:設定画面から、書き込み制限を確認する

デスクトップアプリでは、アプリのメニューからSettings(設定)→ Configuration(構成)を開きます。設定を開くショートカットはWindowsでCtrl+,、macOSでCmd+,です。公式のConfiguration画面にはApproval policyとSandbox settingsが別々に示されています。日本語化や版によって表示名は異なります。

承認と書き込みを、別々に見る

1
Configurationでファイル権限を確認

Sandbox settingsがWorkspace writeなら、作業領域への書き込みが可能です。調査専用ではread-onlyに相当する制限を確認します。

2
承認方針を確認

Approval policyは、制約外の実行をどう扱うかの設定です。承認を求める設定だけでは、作業領域の編集を禁止できません。

3
調査用の新しい会話で、適用状態を確認

依頼を送る前に、入力欄の下の権限コントロールと適用中の設定を確認します。既存の作業が動いているなら、先に停止します。

設定項目が見つからない場合は、次の設定ファイルの確認経路を使います。本記事は全バージョンに同じread-onlyのボタンがあると保証するものではありません。

出典:公式のConfiguration画面、設定の開き方、入力欄の権限コントロール。

画面で確認できない場合:Open config.tomlを使う

Settings → Configuration → Open config.tomlから設定ファイルを開けます。ユーザー設定は通常~/.codex/config.tomlです。従来のサンドボックス設定では、次の値が読み取り専用と、追加承認を求めない方針に対応します。これは設定内容の例であり、記事を読むだけで設定が変わることはありません。

sandbox_mode = "read-only"
approval_policy = "never"

ユーザー設定は、同じ設定を読むアプリ・IDE拡張・CLIにも影響します。信頼されたプロジェクトの.codex/config.toml、起動時の指定、管理ポリシーなども関係するため、ファイルに2行あることだけで適用済みとは判断しません。CLIでは/statusや/debug-configで、実行条件や設定の由来を調べられます。恒久設定を変えず、その回だけ調べたい場合は下のCLI例が使えます。

新しいPermission profilesはベータ機能で、組み込みの:read-onlyなどを選ぶ別の設定方式です。従来のsandbox_modeや--sandboxとの併用では従来設定が優先される場合があり、管理ポリシーによる例外もあります。既存の方式を確認せず、両方の設定を足さないでください。出典:設定ファイルを開く経路、設定の優先順位、Permission profiles。

Ask for approvalは「編集禁止」ではありません

入力欄のAsk for approval(承認を求める)は、許可された作業領域の中では自動で処理する方針です。Approve for meは対象となる承認を自動レビューに回します。どちらも、選ぶだけで作業領域が読み取り専用になる設定ではありません。Full accessも調査専用の代わりにはなりません。

Codexにも/planで実装前の計画を依頼する機能があります。ただし、計画を依頼する操作と、ファイルの書き込みを制限する設定は別々に確認します。Claude CodeのPlanに関する編集制限や例外を、名前が同じという理由でCodexにも当てはめないでください。出典:Codexの/plan。

IDE拡張:歯車からCodex Settingsを開く

Codexのサイドバー上部の歯車 → Codex Settingsから共通の設定を確認し、詳細はOpen config.tomlで確認します。入力欄の権限コントロールも確認してください。エディター側の拡張設定と、エージェントが読むconfig.tomlは別です。開いているファイルを渡すIDE contextを外しても、エージェントのファイル読み取り権限を禁止したことにはなりません。出典:クライアント別のDeveloper settings。

CLI:その回の起動オプションで指定する

Codex CLIが既に使える環境なら、調査対象のフォルダを開いたターミナルで、次のように起動します。設定ファイルを恒久的に書き換える必要はありません。組織の管理ポリシーや、利用するCLIの対応状況は優先されます。

codex --sandbox read-only --ask-for-approval never

--sandbox read-only

書き込み制限を選ぶ

読み取り専用のサンドボックス内で、アクセス可能なファイルの読み取りやコマンド実行を行います。

--ask-for-approval never

承認を求めず制約内で進める

追加の承認を求めません。実行できない操作は、制約を広げて続けるのでなく、できない点として報告させます。

neverは全権限の意味ではありません。サンドボックスの種類と承認方針は別の設定です。OpenAIの公式の組み合わせ表には、read-onlyとneverを併用し、制約内でファイルを読み、コマンドを実行する例が掲載されています。出典:Agent approvals & security。

on-requestとの違い

--ask-for-approval on-requestなら、サンドボックスの外へ出る必要がある操作で承認を求める場合があります。読み取り専用で始めても、そこで別の実行を承認すれば、当初の境界のままではありません。「必要なら聞いてから変更して」と「今回は変更しない」は分けて使います。

調査中に避ける操作

Full accessへの切替、書き込み可能なプロファイルへの変更、制約外の実行の承認を、エラー解消のためにその場で選ばないでください。調査だけなら「その検査は未実施」と残すことも適切な結果です。

Web・Cloud・Remote:表示している端末と実行先を区別する

WebのWorkは管理された実行環境を使い、手元のCodex設定ファイルを読みません。上の2行をPC側へ書いても、それだけでCloudの実行を読み取り専用にはできません。Cloudでは利用画面とワークスペースに用意された制御を確認します。本記事ではCloud全体を読み取り専用にする同等の起動手順は確認できていません。

RemoteでPCの作業を別の画面から見る場合も、守るべき設定は実際にコマンドが動く側の条件です。閲覧側の端末を読み取り専用にしたつもりで判断しないでください。環境の違いはCodexのローカル・Remote・Cloudの使い分けで整理しています。出典:Webとローカル設定の違い。

3. Claude Codeを調査と計画だけに使う

Claude Desktop:Codeタブの送信ボタン横でPlanを選ぶ

対象はClaude DesktopのCodeタブです。ChatやCoworkの設定を、Claude Codeの権限モードと同じものとして扱わないでください。以下のモード名は公式英語文書の表示名を使っています。実際の画面の文言は表示言語や版によって異なります。

送信する前に、実行先とPlanを確認

1
Codeタブで、環境とフォルダを選ぶ

EnvironmentがLocal・Cloud・SSH・WSLのどれか、Project folderが調べたい対象かを確認します。

2
送信ボタン横のモードからPlanを選ぶ

Manualは承認を受けて編集できるモード、Accept editsは編集を自動承認するモードです。調査だけならPlanを選びます。

3
報告だけを依頼し、実装へ切り替えない

下の依頼文を渡し、計画を読んで終了します。調査の続きもPlanのまま行います。

Desktopでは、ターミナルと違ってShift+Tabでモードを切り替えません。送信ボタン横のセレクターを使います。

セレクターで選んだPlanは、そのセッションだけに適用されます。ほかのモードの選択はフォルダごとに記憶され、設定ファイルのpermissions.defaultModeより優先されます。新しい会話でも調査だけにしたいなら、毎回Plan表示を確認してください。CLIと同じ設定ファイルを読むことと、その会話の選択が次回にも続くことは別です。出典:Desktopの権限モードと保存範囲。

VS Code:入力欄の下のモード表示からPlanを選ぶ

Claude Codeのチャットパネルを開き、入力欄の下にあるモード表示 → Planを選びます。v2.1.280以降なら、パネルで/planを送って切り替える方法もあります。計画がMarkdown文書として開いても、実装を承認せず、調査結果として読みます。

新しい会話もPlanにしたい場合

  • VS Codeの設定を開く(Windows/LinuxはCtrl+,、macOSはCmd+,)
  • Extensions → Claude Codeで、claudeCode.initialPermissionModeのユーザー設定を確認する
  • 開始モードをPlanに固定する場合は、そのユーザー設定にplanを指定する
  • 新しい会話を開き、実際にPlan表示になっているか確認する

現在の公式仕様では、claudeCode.initialPermissionModeのワークスペース設定は無視されます。この動作はv2.1.225より前と異なります。また、チャットでPlanを選んだだけでは、その会話だけの設定です。プロジェクトの.claude/settings.jsonにpermissions.defaultModeを置けばVS Codeの開始モードも必ず変わる、とは扱わないでください。拡張の開始設定、最後に選んだ通常モード、管理・ユーザー設定などの優先順位を確認します。

未保存のファイルにも注意が必要です。拡張のclaudeCode.autosaveは、Claudeが読む・書く前にエディターの変更を保存する設定です。AIのソース編集と、エディターによる保存を分けて確認します。開いているファイルを自動で添付する設定も、ファイルアクセスの禁止とは別です。出典:VS Codeのモード操作・拡張設定・優先順位。

Web・スマホ・JetBrainsでの操作

claude.ai/code

入力欄の近くのモードメニューからPlanを選びます。CloudはAccept edits・Planに対応。Autoは組織の許可と対応モデルが必要で、Bypass permissionsは使えません。

スマホ

Claude Codeの会話では、入力欄の「+」→ Permissionからモードを選びます。Remote Controlなら、手元の実行中セッションの権限が変わる点にも注意します。

JetBrains

プラグインはIDE内のターミナルでCLIを使う方式です。次のCLI起動例やShift+Tabを使い、VS Codeの独自設定名を転用しません。

Cloudでは、通常のファイル編集が事前承認されるため、Manualと同じ感覚で使わないでください。調査目的では明示的にPlanを選び、報告の後に実装へ進ませない依頼を渡します。Cloudの編集承認の説明を、Plan中でも無条件にソースを書き換えてよいという意味には読み替えません。出典:画面ごとの切り替え方、Cloudのモード。

CLI:Planで起動し、実装の承認を選ばない

Claude Code CLIでは、次の指定でPlanモードから始められます。通常のPlanはファイルを読み、構成や問題点を調べ、変更案を計画します。ソースの編集ツールによる変更は通常ブロックしますが、計画ファイルは作成します。

claude --permission-mode plan

調査結果を受け取るところで止める

1
Planの状態と起動条件を確認

対話型ターミナルではShift+Tabで切り替えられます。バイパスが利用可能な起動状態かも確認します。

2
問題点・根拠・提案だけを依頼

編集やビルドではなく、対象ファイルと行番号を示した報告を完成条件にします。

3
計画の実装を承認しない

計画が出たら内容を読むか、No, keep planningを選んで調査を続けます。Yesを選ぶとPlanを抜けて実装へ進む選択肢があります。

「良い提案だ」という感想と、「その変更を実行してよい」という承認を分けて伝えます。

Plan中のシェルコマンドも、一律に読み取りコマンドだけではありません。autoモードが利用でき、useAutoModeDuringPlanがオンの場合は、分類器が審査して許可する経路があります。autoが使えない場合などは、組み込みの読み取り専用コマンドの範囲外で承認を求めます。出典:Permission modesのPlan説明。

Planでも編集のブロックが外れる条件があります

公式文書によると、バイパスが利用可能な対話型ターミナルのセッションでは、Planの編集・コマンド制限を強制しません。Planと表示されていても、試みた編集やコマンドが実行され得ます。「いまPlanだから大丈夫」だけで判断せず、バイパスを有効にする起動オプションや設定も確認します。-p、SDK、VS Codeのチャットパネルには別の説明があり、同じ例外を全画面へ一般化しません。出典:bypassPermissionsの説明。

シェルも編集ツールも使わせたくない場合

構成調査やコードの読み取りだけで足りるなら、--toolsで組み込みツールを絞る方法があります。次はファイルを調べるツールをRead・Glob・Grepに絞り、MCPツールも拒否する例です。会話の終了に使うEndConversationは残ります。通常のPlanより調査能力は狭まり、コマンド実行が必要な確認はできなくなります。

claude --permission-mode plan --tools "Read,Glob,Grep" --disallowedTools "mcp__*"

ここで--allowedToolsに置き換えないでください。こちらは「確認なしで使えるツール」の指定で、使えるツールをそれだけに限定する指定ではありません。また--toolsだけではMCPを制限しないため、別の指定が必要です。出典:CLI reference。

Desktopには、CLIの--allowedToolsや--disallowedToolsと同じセッション単位のUI指定はありません。設定ファイルの権限ルールは適用されますが、Planボタンだけでこのツール限定例と同じ状態になるわけではありません。出典:DesktopとCLIの対応範囲。

この例も、アプリ自身の保存処理や、読み込まれる設定・フックなどを含めてPC全体を読み取り専用にするものではありません。未知のプロジェクトを開くなら、既存のフック・プラグイン・外部接続の扱いも別に確認します。より厳しい運用で使う--restrictedは、v2.1.248以降の機能で、ツールだけでなく設定の読み込み範囲なども変えます。普段の環境をそのまま使うPlanの別名ではありません。

ツールの権限を継続的に管理する場合はClaude Codeのallow・ask・deny設定、Bashの隔離が必要な場合はサンドボックスの設定と限界を参照してください。既定で作業フォルダに書き込める隔離は、調査専用とは目的が違います。

4. そのまま使える調査専用の依頼文

権限を用意したら、報告で終了するように依頼します。「直して」「改善して」よりも、何を調べ、どの形で返せば終わりかを具体化する方が、実装へ進む行き違いを減らせます。

今回は現状の調査と助言だけをしてください。実装はしません。

対象:このプロジェクトのログイン処理と認可の境界。
許可:アクセス可能なソースを読み、構成と問題点を説明すること。
禁止:ファイルの作成・編集・削除、設定変更、依存関係の追加、
      ビルド、テスト、DB操作、commit・push・デプロイ、外部サービスの変更。
      フックやスクリプトを実行するために権限を広げないこと。

提出物:
1. 処理の流れと、調査したファイル・行番号
2. 問題候補ごとの根拠、影響、優先度
3. 実行しない改善案と、実装する場合に必要な確認
4. 読み取りだけでは判断できない点と未実施の検査

変更が必要でも実行せず、提案で止めてください。
調査結果を提出したら、その時点で終了してください。
原因調査に使うなら

「保存が消える原因候補を、保存・読込処理と例外処理から調べる」。ログに秘密がある場合は、共有できる範囲を先に決めます。

設計相談に使うなら

「モジュールの依存関係を説明し、責務が重なる箇所を示す」。実際のリファクタリングは提出物に含めません。

セキュリティ点検に使うなら

「所有者確認、認証、認可、入力検証を読む」。攻撃コードの実行や本番へのリクエスト送信は、別の作業として扱います。

提示された改善案に賛成しても、調査用の会話では「この案を採用候補として残す。実装しない」と返せます。実装へ進む場合は、対象変更・テスト・公開の範囲を改めて決めた開発用の会話へ分けると、調査時の制限と依頼の目的を混ぜずに済みます。

5. 開始前・終了後に確認すること

確認は「モデルが変更していないと言った」で終わらせません。一方、変更がないことを確認するために、保護したいソースへ試しに書き込む必要もありません。まず表示・設定の説明・既存の差分を確認し、不明な部分を残します。

開始前:目的と実行条件をそろえる

  • 調査対象のフォルダと、読ませてよい情報を確認する
  • Codexはファイル権限と承認方針、Claude CodeはPlanとバイパスの起動条件を確認する
  • 新しい会話でも同じモードが続くか、共有設定が別のクライアントへ影響するかを確認する
  • シェル・MCP・ブラウザ・外部アプリなど、調査で使う操作の範囲を決める
  • 自分の未コミット変更と未追跡ファイルを把握し、調査後の比較対象を残す
  • 報告の提出を終了条件にし、権限不足でできない検査は未実施として返させる

Git管理下なら、差分を比較する

例えば次のコマンドで、変更ファイルと、ステージ済み・未ステージの差分を確認できます。調査前と後の両方で確認し、前からあった自分の変更をAIの変更と取り違えないようにします。対象のリポジトリで既にGitを利用している場合の例です。

git status --short
git diff --stat
git diff --cached --stat

ただし、これだけでは「一切変更されなかった」という証明にはなりません。git diffは未追跡ファイルを表示せず、無視されたファイル、作業フォルダ外、DB、外部サービスの状態まで網羅しません。一度変えてから元へ戻した操作も、最終差分だけでは分かりません。報告には確認できた対象と、確認していない対象を分けて残します。Git公式:git status、git diff。

終了後:報告を実装の結果として読まない

  • 問題候補にはファイル・行番号・処理の根拠があるか
  • 静的に読んだ判断と、実際に再現・テストした結果を分けているか
  • 調査前後の差分に、説明のない変更がないか
  • 権限不足や実行禁止で確認できなかった項目が明記されているか
  • 次に必要な作業が「提案」として残り、勝手に開始されていないか

6. できない調査と、残るリスク

テストやビルドも書き込みを伴う

コードを編集しなくても、テストは一時ファイルやスナップショット、ビルドは成果物、パッケージ管理はキャッシュや依存関係を書き込むことがあります。「テストだけなら何も変わらない」とは扱わないでください。読み取り専用で失敗することは、必ずしも不具合ではなく、制限どおりの結果である可能性があります。

報告が「この条件で認可が抜ける可能性がある」までなら、次は別の検証用環境で再現する計画を作れます。調査の精度を上げたいからと、その場で本番のDBや機密のある端末へ書き込みを許す必要はありません。静的調査で分かることと、実行しなければ分からないことを区別する方が、判断に使える報告になります。

ソースの書き込み制限だけでは、ここまで守れない

秘密の読み取り

読む権限がある情報は、調査に使われ得ます。読み取り専用と秘密ファイルの読み取り拒否は別の対策です。

外部サービスの変更

MCPや接続アプリが、チケットやリポジトリ等を変更できる場合があります。ローカルの制限だけで全経路を止めたとは言えません。

履歴・計画・ログ

会話や計画の保存は、対象ソースの編集とは別です。PC上のあらゆる書き込みをゼロにする起動例ではありません。

CodexのPermission profilesはローカルコマンドを対象とし、MCP・接続アプリ・ブラウザ・Cloudなどは別の制御を使います。

Codexのネットワーク制限も、サンドボックス内のコマンド通信と、モデル・認証などのサービス通信を区別しています。読み取り専用で起動しても、読んだ情報がモデルへ送られないことや、学習に使われないことまで保証しません。出典:Permissionsの対象範囲。秘密の読み取りを止める対策はCodexの秘密ファイルと権限、学習利用と保存の設定はChatGPT・Codexの学習利用とプライバシーで確認してください。

思ったとおりに制限できないとき

  • 項目がない:使っている製品・版・実行先と、組織の管理制限を確認します。制限を回避する設定へ切り替えません。
  • テストが失敗する:書き込みが必要なのか、コードの問題なのかを分けます。未実施の検査を報告へ残します。
  • 途中で制限した:すでに実行した変更は戻りません。進行中の処理を止め、差分を確認してから新しい調査用の会話を始めます。

まとめ

Codexはread-onlyと承認方針を指定し、Claude CodeはPlanの起動条件を確認して、必要なら使えるツールも絞る。その上で、報告を提出したら終了する依頼文を渡します。どちらも「調査すること」と「変更を実行すること」を分けて運用できます。

厳しい制約で調べられない項目が残っても、安易に全権限へ切り替えず、未実施と次の検証案を受け取ってください。読み取りの範囲、外部ツール、アプリ自身の保存処理まで含めた制御が必要な場合は、ソースの編集禁止とは別に設計します。

FAQ

「調査だけして」と頼めば、読み取り専用になりますか?

目的は伝わりますが、実際の編集能力やコマンドの権限は変わりません。依頼文に加えて、CodexのサンドボックスやClaude CodeのPlan・ツール制限を使い、何が制限されているか確認します。

Claude CodeのPlanなら、ファイルは絶対に変更されませんか?

そうは言えません。通常はソース編集をブロックしますが、計画ファイルは作成します。バイパスが利用可能な対話型ターミナルではPlanの制限を強制しないという公式の例外もあります。PC全体の書き込みを禁止するモードではありません。

Codexのneverは、確認なしで何でも実行する設定ですか?

承認を求めない設定であり、サンドボックスを解除する意味ではありません。read-onlyと組み合わせれば、その制約内で調査します。全権限を与える起動とは区別してください。

読み取り専用なら、セキュリティ検査は完了したと言えますか?

いいえ。ソースを読んで見つけた問題候補と、実行して再現した結果は別です。設定・実行環境・依存サービスを確認できなければ、結論には限界が残ります。根拠と未確認事項を報告し、必要な実証は別の検証環境で計画します。

Codexアプリで「承認を求める」にすれば、編集されませんか?

それだけでは禁止できません。承認方針とファイルの書き込み制限は別です。Configurationと適用中の権限を確認し、調査専用ではread-onlyに相当する制限を使います。

Claude DesktopやVS Codeで一度Planを選べば、次回もPlanですか?

セレクターで選んだPlanは、その会話・セッションだけに適用されます。毎回表示を確認してください。VS Codeで開始モードを固定する場合は、ユーザー設定のclaudeCode.initialPermissionModeを使う方式があります。