CodexのMCP設定ガイド|config.toml・CLI・Desktop・IDEを安全に分ける
CodexのMCP設定を、config.toml、CLI、ChatGPT desktop app、IDE extension、project scope、tool allow/deny、approval mode、OAuth loginから整理します。
公開 2026.08.09 / 更新 2026.08.10
この記事のポイント
- CodexのChatGPT desktop app、Codex CLI、IDE extensionは、同じCodex hostのMCP設定を共有する
- project-local configはprovider・auth・profile・notification・telemetryの強制上書き場所ではなく、profile fileと`--profile`の選択も別に確認する
- profile、CLIの`--config`、project root、CODEX_HOMEのstateを分け、MCP設定の実効値とcredential保存場所を一緒に扱わない
- 通常のuser設定は~/.codex/config.toml、project設定はtrusted projectの.codex/config.tomlで分ける
- stdioとStreamable HTTPで設定項目が異なり、enabled_tools・disabled_tools・approval modeを個別に設計する
- ChatGPT webのplugin経由のremote MCPはlocal Codex configを読まないため、hostと設定面を混同しない
先に結論:Codex MCPは、設定面と権限面を分けると事故を減らせる
OpenAIの現行MCP Docsでは、ChatGPT desktop app、Codex CLI、IDE extensionが、同じCodex hostのMCP設定を共有すると説明されています。つまり、CLIで追加したserverがdesktopやIDEでも見える可能性があります。便利な反面、個人用の強いtoolや認証済みserverを、別の作業面にもそのまま持ち込む境界が生まれます。
一方、ChatGPT webはlocal Codexの設定ファイルを読まず、WorkのPluginsを入口にremote MCP-backed toolsを使います。Codexのlocal configとChatGPT webのpluginを同じMCP設定だと決めつけず、host、設定ファイル、認証、tool policyを最初に分けて記録します。
| 利用面 | MCPの入口 | 最初に確認すること |
|---|---|---|
| ChatGPT desktop app | SettingsのMCP servers | 追加後のRestart、OAuth要否、共有されるCodex host |
| Codex CLI | codex mcpコマンド、TUIの/mcp | config.toml、server list、login、起動shell |
| IDE extension | gear menuのMCP servers | extension restart、表示されるserver、tool approval |
| ChatGPT web | WorkのPluginsとremote tools | local configを読まないこと、workspace権限、connector auth |
Codexが対応するMCP serverの範囲
| server形態 | 公式Docsの説明 | 運用で分けること |
|---|---|---|
| STDIO | commandで起動するlocal process。環境変数を扱える | command、args、PATH、cwd、env_vars、stderr、停止条件 |
| Streamable HTTP | addressへ接続するserver。Bearer tokenやOAuthを扱える | url、auth、scope、header、timeout、再認証 |
| ChatGPT session auth | trusted first-party serverで使える認証方式 | 対象origin、session、host差、通常OAuthとの違い |
| server instructions | 初期化時のinstructionsをtoolと並ぶserver-wide guidanceとして読む | 最初の512文字、制約、rate limit、cross-tool workflow |
config.tomlの範囲:user設定とtrusted project設定
CodexのMCP設定はconfig.tomlに置きます。公式Docsでは、通常のuser設定を~/.codex/config.toml、project単位の設定を.codex/config.tomlとして説明し、project設定はtrusted projectsに限定しています。どちらを使うかは、個人の全repoで使うserverか、そのrepoだけで使うserverかで決めます。
| 範囲 | 向くserver | レビューする境界 |
|---|---|---|
| user config | 個人の読み取り用utility、頻繁に使うprivate server | 他のrepoでも起動すること、credentialの保管、全hostへの共有 |
| project config | そのrepoのteam tool、review済みの限定server | trusted project、version管理、.codex/config.tomlの差分 |
| plugin MCP | plugin bundleが提供するserver | pluginの構成、auth、tool policy、user configとの重複 |
| ChatGPT web plugin | Workのremote connectorやMCP tool | workspace policy、connectorのsign-in、local config非共有 |
project configをversion管理する場合でも、tokenやsecret実値をファイルへ入れません。共有するのはserverの役割、commandや接続先の抽象的な定義、必要なら環境変数名までにし、実値はhost側の安全なcredential経路へ分けます。
Codex configの優先順位:CLI・project・profileを分ける
現行のConfig basicsでは、CodexはCLI flagと`--config` overrideを最優先に、projectの`.codex/config.toml`、`--profile`で選ぶprofile、user config、system config、built-in defaultの順で値を解決します。project configはproject rootからcurrent working directoryへ積み重なり、closest winsですが、trusted projectでだけ読み込まれます。MCP serverが見えないときは、ファイルがあるかだけでなく、どのlayerが最後に値を決めたかを確認します。
| 優先順位 | 設定レイヤー | MCPで確認すること |
|---|---|---|
| 1 | CLI flag・`--config` | 今回のinvocationだけのserver、url、tool policyのoverride |
| 2 | project `.codex/config.toml`(closest wins) | trusted project、rootからcwdまでの重複server名 |
| 3 | `--profile`のprofile file | 個人の環境差、profile選択、共有repoへ混ぜないこと |
| 4 | user `~/.codex/config.toml` | 全project・CLI・IDEへ広がるserverとcredential |
| 5 | system config・built-in defaults | 管理者設定や未指定時のfallback、個人設定で上書きできる範囲 |
| 設定項目 | Configuration Referenceの意味 | MCP導入前の確認 |
|---|---|---|
| project-local config | trusted projectの`.codex/config.toml`。projectのserver・tool設定を置けるが、provider・auth・profile・notification・telemetryの強制overrideには使えない | trust状態、共有する差分、user configと同名キーの実効値を確認する |
| profile file | `$CODEX_HOME/profile-name.config.toml`に置き、`--profile profile-name`で選択する | profile名、選択中のhost、server・credentialの共有範囲を確認し、repoへ実値を持ち込まない |
| `mcp_servers.<id>.required` | enabled MCP serverが初期化できないとstartup / resumeを失敗させる | 必須にするserverの可用性、offline時の復旧、作業停止条件を決める |
| approval mode | server全体の`default_tools_approval_mode`に`auto`・`prompt`・`writes`・`approve`があり、tool単位のoverrideもある | 最終tool集合とserver・tool単位の承認挙動を別々に確認する |
- project configへproviderやauthを強制する前提を置かず、どの設定layerが値を決めたかを`--profile`、CLI flag、user configとあわせて確認する。
- `required = true`は便利なhealth checkではなく、serverが初期化できないとstartup / resume自体を止める設定なので、復旧手順を持つserverだけで使う。
- MCPのtool allowlistとapproval modeは、project configがtrustedかどうか、user-level serverが残っていないかとは別の軸として点検する。
Configuration ReferenceとMCPのFAQ
`.codex/config.toml`でuser設定のproviderやprofileを上書きできますか?
できるとは扱いません。現行Referenceでは、project-local configに置かれたprovider、auth、profile、notification、telemetryなどのキーは無視されます。projectのMCP server設定と、host側のuser config・profile選択を分けて確認してください。
MCP serverに`required = true`を付けるとどうなりますか?
そのenabled serverが初期化できない場合、startupまたはresumeを失敗させる設定です。常に接続できるとは限らないserverをrequiredにせず、offline時の復旧と作業停止条件を先に決めます。
| 設定・状態 | 公式Docsの説明 | MCP設定での確認 |
|---|---|---|
| `--profile` | base user configの上にprofile fileを重ね、project・CLI layerより下で差分を適用する | 選択中profileがどのserver、model、approvalへ影響するかを`--profile`単位で確認する |
| `-c` / `--config` | 任意のkeyを1回だけoverrideでき、値はJSONではなくTOML。nested keyはdot notationを使える | Shellのquote、`mcp_servers.<id>.enabled=false`のような対象、実行後に残る設定がないことを確認する |
| `CODEX_HOME` | 既定は`~/.codex`。`config.toml`、file-basedなら`auth.json`、`history.jsonl`、logs / cachesなどのlocal stateを置く | credential・会話履歴・ログをrepoや共有設定へコピーせず、hostごとの保存範囲を確認する |
| project root / relative path | 既定では`.git`を含むdirectoryをrootとし、`project_root_markers`で変更できる。project config内のrelative pathはその`.codex/` directory基準 | どの`.codex/config.toml`を読んでいるか、MCP command・cwd・設定ファイルpathの基準を確認する |
- 全hostの設定を書き換える前に、1回だけの検証は専用flagまたは`--config`で行い、TOMLのquoteとdot notationの解釈を確認する。
- 旧profile tableを残したまま新しいprofile fileを追加せず、Codex version、profile file、`--profile`指定、実効値を一緒に記録する。
- `CODEX_HOME`は設定ファイルだけでなくauth、履歴、ログ、cacheを含み得るため、MCPのcredentialや会話をGit・CI artifact・共有repoへ持ち込まない。
Advanced ConfigurationとMCPのFAQ
`--config`の値はJSONで渡しますか?
JSONではなくTOMLとして解析されます。nested keyはdot notationで指定でき、Shellで空白や記号が分割されないようquoteを確認します。MCP serverを一時的に無効化する場合も、対象IDと実行後の実効値を確認します。
古い`[profiles.profile-name]`をそのまま使えますか?
Codex 0.134.0以降は、そのtableやconfig.tomlのtop-level `profile` selectorを`--profile`の設定として読まないと公式Docsにあります。`~/.codex/profile-name.config.toml`へ移行し、使用中のCodex versionと実効profileを確認してください。
CLI・TUI・desktop・IDEの設定導線
- desktop appではSettingsのMCP serversからserver名、STDIOまたはStreamable HTTP、commandまたはURLを入力し、保存後にRestartする
- Codex CLIではcodex mcp add、codex mcp list、codex mcp loginを使い、利用中のserverはTUIの/mcpで確認する
- IDE extensionではgear menuから追加し、extensionをRestartして有効serverとOAuth要否を確認する
- config.tomlを直接編集するときは、userとprojectのどちらを変更したか、他のhostへ共有されるかを差分で確認する
- ChatGPT webではPluginsがremote toolの入口なので、local Codex configへ追加しただけで使えると期待しない
codex mcp list
codex mcp login <server-name>
codex mcp --helpCLIのhelpや画面にserverが出ても、起動成功・認証成功・tool call成功・安全な結果は同じではありません。まずlistで構成、loginで認証の入口、TUIやhost画面でenabledとapprovalを分け、読み取り用の小さなtoolから確認します。
STDIOの設定:command・cwd・envを最小にする
STDIO serverはlocal processとして起動するため、PATH、command、args、cwd、環境変数、終了時のログを確認します。projectを開いたshellとCodex hostが使うshellが違う場合、同じcommandでも起動結果が変わることがあります。commandの全権限を最初から許可せず、読み取りtoolとtest用repoで小さく確認します。
[mcp_servers.readonly_server]
command = "YOUR_MCP_SERVER_COMMAND"
args = ["--mode", "readonly"]
env_vars = ["MCP_TOKEN"]
cwd = "YOUR_PROJECT_DIRECTORY"
enabled_tools = ["search", "read"]
disabled_tools = ["write", "delete"]
default_tools_approval_mode = "prompt"
startup_timeout_sec = 10
tool_timeout_sec = 60
enabled = true- commandとargsは実行されるprocessの範囲として確認し、未確認のwrapperやscriptを足さない
- env_varsは転送を許す環境変数名のallowlistとして扱い、値やtokenをrepoへ書かない
- cwdは対象repoやsandboxの範囲を狭くし、全ユーザーフォルダを作業範囲にしない
- startup timeoutとtool timeoutを分け、hung processや長い外部処理を無制限に待たない
- enabled_toolsとdisabled_toolsを両方使う場合、disabled_toolsがenabled_toolsの後に適用される前提を確認する
Streamable HTTPの設定:接続先・Bearer・OAuthを分ける
Streamable HTTP serverでは、接続先のorigin、認証方式、header、timeout、scopeを別々に管理します。Bearer tokenを環境変数から送る設定と、Codexが保存したOAuth credentialを使う設定は同じではありません。接続できないときに認証を全体的に緩めたり、toolを全部enableしたりせず、まずserver、issuer、scope、対象resourceを確認します。
| 項目 | 確認内容 | 安全側の初期値 |
|---|---|---|
| url | 接続するMCP endpointと環境 | 公式Docsや管理者が示す接続先だけ |
| auth | OAuthかBearerか、host sessionか | serverが要求する方式を明示し、混同しない |
| bearer_token_env_var | Authorizationに使う環境変数名 | 実値をconfigやログへ書かない |
| http_headers | 静的headerの名前と用途 | 秘密や個人情報をstatic valueに置かない |
| enabled_tools | serverから使うtoolのallowlist | read-onlyの必要なtoolだけ |
| approval mode | tool callを自動・prompt・write確認に分ける | promptまたはwritesから開始 |
tool policy:enabled_tools・disabled_tools・approval modeの順番
Codex Docsでは、enabled_toolsがallowlist、disabled_toolsがdenylistとして案内され、disabled_toolsはenabled_toolsの後に適用されます。さらにserver全体のdefault_tools_approval_modeと、tool単位のapproval_modeを設定できます。名前の設定だけで安全になるのではなく、最終的に実行可能なtool集合と承認挙動を表にしてから使います。
| 設定 | 意味 | 最初の運用 |
|---|---|---|
| enabled_tools | 使用を許すtoolの集合 | search・readなど必要なread-onlyから始める |
| disabled_tools | allowlistの後に除外するtool | write・delete・deploy・adminを明示的に外す |
| auto | tool approvalを自動化するmode | 信頼範囲が固定できる読み取り用途に限定する |
| prompt | toolごとに確認するmode | 最初の検証と外部side effectに使う |
| writes | read-onlyでないtoolをpromptするmode | write境界を残したい作業で候補にする |
| approve | 承認を要求するmode | hostの実装・表示と合わせて確認する |
server instructions:最初の512文字を運用境界として読む
CodexはMCP serverの初期化時に返されるinstructionsを、server-wide guidanceとしてtoolと一緒に読みます。公式Docsでは、Codexがtoolを選ぶときに重要な情報が届くよう、最初の512文字をself-containedにするようserver作者へ案内しています。client側では、instructionsを便利な説明文としてだけでなく、cross-tool workflow、制約、rate limit、禁止事項の候補として読み、repoのAGENTS.mdや人間の権限設定と矛盾しないか確認します。
| instructionsの内容 | 読み方 | 越えてはいけない境界 |
|---|---|---|
| cross-tool workflow | toolを使う順序や前提 | repo固有のレビューや承認を省略しない |
| rate limit | 外部APIを呼ぶ頻度の制約 | 無限retryや並列呼び出しを正当化しない |
| resource scope | 読み取れるデータや対象 | hostのtool allowlistやuser consentを上書きしない |
| output format | 結果の形と注意点 | AIが返す文章を成功判定や事実の証明にしない |
OAuth loginとcredential:Codex設定に実値を置かない
OAuth対応serverでは、Codex CLIのcodex mcp loginが認証の入口になります。Bearer tokenを使う場合も、Docsにあるbearer_token_env_varのように環境変数名と実値を分けます。OAuthのissuer、resource、scope、redirect、token保存は接続先の仕様に従い、MCP OAuth記事で確認するCIMD・issuer・PKCEなどのprotocol境界と、Codex hostのlogin画面を混同しません。
- config.toml、project config、Git差分、CI artifactへaccess token、client secret、refresh tokenを残さない
- serverごとにscopeとcredentialを分け、同じtokenを別のauthorization serverや環境へ流用しない
- login後はserver list、enabled状態、tool policy、auth済みのhostを確認する
- 認証失敗とtool権限不足を分け、全scope付与やapproval無効化を解決策にしない
- credentialを消す、再認証する、接続を止める手順を人間が実行できるようにする
Plugin-provided MCP serversはuser configと別管理
OpenAI Docsでは、installed PluginがMCP serverをbundleする場合、そのserverのtransport commandはpluginから起動され、user configで起動commandを設定するのではないと説明されています。一方で、`plugins.<plugin>.mcp_servers.<server>`の下で、plugin配下のserverについてenabled状態やtool policyを設定できます。Pluginを入れたこと、MCP serverが起動したこと、toolを許可したことを三つに分けて確認します。
| 対象 | 見る場所 | レビューの焦点 |
|---|---|---|
| Plugin bundle | Pluginのmanifestと公式導線 | 含まれるMCP、Skill、Connector、Hook、認証 |
| MCP server | `plugins.<plugin>.mcp_servers.<server>` | enabled、tool allowlist、approval mode |
| user/project config | config.tomlや.codex/config.toml | 同名serverや重複endpoint、共有範囲 |
| 外部接続 | connectorやserverのauth | 送信データ、scope、revoke、監査 |
MCPの実行環境:local STDIO・remote STDIO・Streamable HTTP
| 形態 | 公式Docsの追加情報 | 安全確認 |
|---|---|---|
| local STDIO | commandでlocal processを起動し、`env_vars`の通常の文字列はCodexのlocal environmentから読む | command、cwd、local environment、secretの転送範囲をhostごとに確認する |
| remote STDIO | `experimental_environment = "remote"`で利用可能なremote executorから起動でき、`source = "remote"`の環境変数はremote executorから読む。remote MCP stdioが必要 | localにある値がremoteで読めるとは決めつけず、remote側のcredential、ログ、network、executorの寿命を別に確認する |
| Streamable HTTP | `auth = "oauth"`は保存済みMCP OAuth credential、`auth = "chatgpt"`はtrusted first-party ChatGPT originのcurrent sessionを使い、stored OAuthをfallbackにできる | generic OAuth、ChatGPT session、Bearer、static headerを同じ認証と扱わず、originとcredential sourceを記録する |
- `env_vars`の文字列はlocal environment、`source = "remote"`はremote executor environmentという境界を確認し、tokenをlocalからremoteへ暗黙に転送しない。
- `env_http_headers`はheader名と環境変数名を分ける設定なので、static `http_headers`へsecret実値を置かない。
- credential sourceが解決しない場合に認証なしで接続できるserverもあり得るため、接続成功を認証成功と扱わず、server側の要求を確認する。
- `enabled = false`はserverを削除せず無効化する設定、`required = true`は起動できないとstartup failureにする設定として、停止と必須化を分ける。
OAuth callbackはbase URLではなく、実際のredirect URIを登録する
MCP OAuthで固定portが必要な場合は`mcp_oauth_callback_port`、remote Devbox ingressやcustom pathが必要な場合は`mcp_oauth_callback_url`を設定できます。Docsでは、Codexがbase callback URLへserver固有のcallback IDを追加してredirect_uriを作るため、OAuth providerへ登録するのはbase hostだけでなく、実際に生成される完全なredirect URIだと案内しています。callbackのport、path、query、server識別子が変われば認証の戻り先も変わるため、設定変更後に登録値とlocal / remote bindingを再確認します。
OAuth serverが`scopes_supported`を広告する場合、Codexはlogin時にserver提示scopeを優先し、そうでなければconfig.tomlのscopeへfallbackします。scopeを全許可にしてcallbackエラーを回避するのではなく、serverのscope、resource、redirect URI、credential storageを一つずつ確認します。
Codex MCPのトラブル切り分け順
| 症状 | 最初に確認すること | 避けたい対応 |
|---|---|---|
| CLIでは見えるがIDEにない | 同じCodex hostのconfig、extension restart、project trust | 別configへtokenをコピーする |
| serverが起動しない | command、args、cwd、PATH、stderr、startup timeout | tool権限を増やして起動を通す |
| toolが多すぎる | enabled_tools、disabled_tools、plugin policy | 全部enableしてから選ぶ |
| OAuthが完了しない | serverのissuer、scope、callback、codex mcp login | Bearer tokenをconfigへ直書きする |
| ChatGPT webで見えない | local configとWork Pluginsの違い、workspace policy | desktopの設定をwebへ共有できると期待する |
| tool callが自動実行される | default approval mode、tool override、host policy | promptやwritesをautoへ変更して終わる |
導入前の最小チェックリスト
- ChatGPT desktop app、Codex CLI、IDE extension、ChatGPT webのどのhostで使うか記録した
- user configとtrusted project configのどちらに置くか、共有範囲を決めた
- STDIOかStreamable HTTPか、command・cwd・url・auth・timeoutを分けて確認した
- enabled_toolsとdisabled_toolsの最終集合を確認し、read-onlyから始めた
- default approval modeとtool単位のoverrideを確認し、write・delete・deployをpromptまたは除外にした
- token、secret、refresh tokenをconfig、repo、ログ、artifactへ残していない
- server instructionsの制約、rate limit、cross-tool workflowをAGENTS.mdや人間のレビューと照合した
- codex mcp list、login、TUIの/mcp、hostのRestart後に接続状態とtool数を確認した
- 失敗時にserverをdisable、credentialをrevoke、差分を戻す手順がある
Codex MCP設定のFAQ
Codex CLIで追加したMCPはChatGPT webでも使えますか?
同じとは限りません。OpenAI Docsでは、ChatGPT desktop app、Codex CLI、IDE extensionは同じCodex hostのMCP設定を共有する一方、ChatGPT webはlocal Codex configを読まず、WorkのPluginsを入口にremote toolsを使うと説明されています。
MCP設定はどこに置きますか?
公式Docsでは、user設定が~/.codex/config.toml、project設定がtrusted projectの.codex/config.tomlです。全repoで使うか、そのrepoだけで使うか、credentialとtool policyの共有範囲で決めます。
enabled_toolsとdisabled_toolsはどう使いますか?
enabled_toolsで許可するtoolを絞り、その後にdisabled_toolsで除外します。最終集合を確認し、write・delete・deployは最初から除外またはpromptにして、read-onlyから試します。
Codex MCPのapproval modeは何を変えますか?
server全体やtoolごとのtool approvalの初期挙動を変えます。auto、prompt、writes、approveの選択肢がありますが、mode名だけでtoolの安全性やscopeが保証されるわけではありません。
MCPのserver instructionsを信頼してよいですか?
Codexは初期化時のinstructionsをserver-wide guidanceとして読みますが、repoのルール、人間の承認、hostのtool policyを上書きするものではありません。特に最初の512文字にある制約やrate limitを読み、AGENTS.mdや設定と矛盾しないか確認します。
OAuth tokenをconfig.tomlへ書けば簡単ですか?
安全な初期設計ではありません。credentialの実値をconfig、repo、ログへ残さず、codex mcp loginや環境変数名による分離を使い、serverごとのscope・issuer・revokeを別に管理します。
STDIOのremote executorとlocal processは同じ環境変数を見ますか?
同じとは限りません。`experimental_environment = "remote"`でremote MCP stdioを使う場合、`source = "remote"`の環境変数はremote executorから読みます。localのcredential、filesystem、network、ログがremoteへそのまま共有されるとは考えず、実行面ごとに確認します。
OAuth callback URLはbase URLだけ登録すればよいですか?
不十分な場合があります。`mcp_oauth_callback_url`を使うと、Codexはbase URLへserver固有のcallback IDを追加したredirect_uriを生成します。OAuth providerには、port、path、query、追加されたcallback IDを含む実際の完全なredirect URIを登録し、設定変更後に再確認します。
auth = "chatgpt"はどのMCP serverでも使えますか?
一般的なOAuthの別名とは扱いません。公式Docsでは、trusted first-party ChatGPT originでcurrent ChatGPT sessionを使う方式として案内され、stored OAuthをfallbackにできます。対象origin、host、serverの対応を確認し、generic OAuthやBearer tokenと混同しないでください。
まとめ:Codex MCPは、接続より先に共有範囲とtool policyを決める
CodexのMCPは、ChatGPT desktop app、Codex CLI、IDE extensionで設定を共有できる一方、ChatGPT webのWork Pluginsとは別の面があります。導入時は、config.tomlの範囲、trusted project、STDIO/Streamable HTTP、auth、server instructions、enabled/disabled tools、approval mode、OAuth credentialを分けて確認します。read-only・最小tool・prompt承認から始め、hostをまたいだ表示、差分、ログ、revoke手順まで確認できてから、外部side effectのあるtoolへ広げてください。
Codex CLIのMCP commandは、登録・認証・診断を分ける
| command / flag | 公式Docsの説明 | Windowsでの確認 |
|---|---|---|
| `codex mcp` | MCP serverのadd、get、list、login、logout、removeを管理し、`~/.codex/config.toml`に保存する | 実行したprofile、user / projectの設定範囲、server名、削除と無効化の違いを確認する |
| stdioの`--env` | stdio serverを起動する時に環境変数assignmentを渡す | 変数名と実値を分け、親Shell・子process・ログへの継承範囲を確認する |
| HTTPのBearer / OAuth | `--bearer-token-env-var`、`--oauth-client-id`、`--oauth-resource`はStreamable HTTPの接続設定。`login` / `logout`はOAuth対応のStreamable HTTP server向け | stdioとHTTPの引数を混ぜず、endpoint、resource、scope、credential sourceを接続先と照合する |
| `codex mcp get --json` | 特定serverのraw config entryをmachine-readableに表示する | 出力をログ・issue・CI artifactへ保存せず、header、env、path、credential参照名の漏えいを確認する |
| `codex doctor` / `codex login status` | local install、config、auth、runtime、Git、terminalなどを診断し、login statusはcredentialがある時にexit 0を返す | 実値ではなく診断結果の範囲だけを共有し、exit codeを認証の有効性やMCP tool権限の証明と混同しない |
| `--strict-config` | 認識できないconfig fieldがある時にerrorにする。`codex`、`exec`、`review`などruntime commandで使える | Codex version差による設定の黙った無視を早期に止め、実効configとMCP serverの起動結果を別に確認する |
CLI commandが表示されたことを成功・安全と扱わない
- `codex mcp list`は登録されたserverの確認、`get`は設定entryの確認、`login`はOAuth認証の入口であり、serverの起動成功、tool callの成功、外部side effectの安全性をそれぞれ証明しない。
- `codex mcp login` / `logout`はOAuth対応のStreamable HTTP serverに限る。stdio serverのcommand起動やBearer tokenの環境変数設定を、OAuth loginだけで完了したとは扱わない。
- `--env`、`--bearer-token-env-var`、configの`env_vars`は環境変数名と実値を分けるための入口であり、secretの表示・記録・子processへの継承を無条件に安全にする機能ではない。
- `--strict-config`で未知のkeyを止めても、既知の設定が意図したscope・approval・networkを持つとは限らない。Codex version、profile、project trust、MCPの最終tool集合を別に確認する。
- Developer commandsのmaturity表示でStableとExperimentalを分ける。app-server、execpolicy、debug系などExperimental commandを、通常のMCP接続確認や本番運用の前提にしない。
ChatGPT webのcomposerで`/`を入力して出るslash commandは、ChatGPT desktop appやCodex CLIのcommand setを公開するものではありません。`/mcp`などのTUI操作、`codex mcp`、desktopのSettings、WorkのPluginsは別の入口として扱い、どのhostがどのconfigとcredentialを読んでいるかを先に記録します。
Developer commandsとMCPのFAQ
`codex mcp login`を実行すれば、どのMCP serverでも認証できますか?
できません。公式Docsでは、`login` / `logout`はOAuthをサポートするStreamable HTTP server向けです。stdio serverのcommand、Bearer token、OAuth resource、scope、server側の対応を分けて確認します。
`codex mcp get --json`の結果をそのまま共有してよいですか?
そのまま共有しません。raw config entryにはserverのcommand、URL、header、環境変数参照名、pathなどが含まれ得ます。実値を表示せず、必要なkey名と伏せた構造だけをレビューします。
`codex doctor`が成功すればMCPも動きますか?
保証されません。`doctor`はlocal install、config、auth、runtime、Git、terminalなどの診断レポートを作るcommandです。対象serverの起動、OAuth、tool allowlist、approval、外部接続は個別に確認します。
`--strict-config`でエラーが出なければ設定は正しいですか?
構文・認識できないfieldの検出に役立ちますが、意図したscopeや権限の証明ではありません。Codex version、profile、project trust、serverの実効設定とtool集合を別に確認してください。
関連記事
- codex mcp-server非推奨後の移行先|App Server・SDK・Claude Code pluginの選び方
移行先は一つではありません。外部clientのrich UIならApp Server、jobs / CIならSDK、Claude Codeへ統合するならpluginを、MCP設定とは切り分けて選びます。
- MCPとは?AIエージェントに外部ツールをつなぐ仕組みと注意点
MCPはAIに外部ツールをつなぐ共通プロトコルです。仕様とCodexの設定・認証・tool権限を分けて、安全な導入判断を整理します。