要点:Mac で Postman デスクトップ版を使っていて、Claude Code、Codex、Cursor も使っているなら、2 分ほどでエージェントの設定を確認しておきましょう。
- GitHub issue #14370 によると、既存ユーザーが Postman 12.33.4 を開いたときにログへ
auto-existing-upgradeが記録され、その後 Claude Code と Codex の両方に Postman プラグインが入っていました。Codex の~/.codex/config.tomlには、Postman 自身の起動フックを信頼済みにするtrusted_hashの記録も追加されていました。同じ issue で別のユーザーが 12.35.1 でも同じだったと報告しています。 - Postman の社員は issue で、まとめてインストールするのは CLI とプラグインのセットアップを楽にするためで、opt-in(明示的な同意)をもっと分かりやすくし、フックの承認とセッション開始時の動作を見直していると回答しました。
- 私たちは 11 月 4 日、Postman 公式の npx インストーラーを隔離ディレクトリで実行し、同じ項目を再現しました。
trusted_hashは issue に貼られた値と一文字残らず一致し、起動フックが Claude Code と Codex 両方のセッションに Postman の指示を注入しました。 - 公式の削除コマンド
npx @postman/postman-plugin removeで両方のプラグインは消えますが、私たちのテストでは Codex の marketplace 項目とtrusted_hashの記録が config.toml に残りました。手作業で消す必要があります。
最速の確認方法:
grep -n -i postman ~/.codex/config.toml ~/.claude/settings.json ~/.claude.json 2>/dev/null
claude plugin list
codex plugin list
Postman の項目が出てきたら、下の 3 ステップで確認と削除を進めてください。
API Key を作成して Claude Code、Codex、Cursor でモデルを使う →
何が起きたのか
issue #14370(10 月 25 日作成、タイトルに [SEVERE])によると、報告者はしばらく使っていなかった Postman 12.33.4 を macOS で開きました。その後 Codex が MCP サーバーへのログインを何度も求め、API 関連の作業のたびに Postman のスキルを読み込むようになりました。Postman 自身のログ ~/Library/Application Support/Postman/logs/main.log には次の 2 行がありました。
PostmanAgentPluginService~install: script completed
{"source":"auto-existing-upgrade","results":["claude-code:installed","codex:installed"],"installer":"script"}
Main: autoInstall.plugin.existing-user finished
{"outcome":"installed","platform":"darwin","exposed":true,"signedIn":true,...}
報告に挙げられた変更:
| 場所 | 報告で見つかった内容 |
|---|---|
| Codex ~/.codex/config.toml | [marketplaces.postman](postmanlabs/postman-plugin を指す)、[plugins."postman@postman"] enabled = true、[hooks.state."postman@postman:..."] の trusted_hash |
| Codex プラグインのフック | SessionStart フック(startup、clear、compact で実行)が、毎回のセッションに「簡単でない API エンジニアリング作業の前に postman:api-engineer スキルを読み込む」という指示を注入 |
| リモート MCP | https://mcp.postman.com/mcp。未ログインだと Codex のログに Auth required |
| Claude Code | ~/.claude/settings.json で postman@claude-plugins-official が有効、バージョン 2.0.1、user スコープ |
| CLI | ~/.local/bin に Postman CLI と lib ディレクトリ |
報告が引用したインストーラーのソースには approvePostmanHook という関数があり、プラグインを入れた後に Codex の hooks/list と config/batchWrite を使って Postman のフックを信頼済みとして書き込みます。報告者は、この報告が示すのは同意なしに他のツールの設定が変えられたことであり、データが送られたことを示すものではないと明記しています。The New Stack の記事も、Postman が API データを収集・送信した証拠は issue にないと指摘しています。
その後の動き:
- issue のコメントによると、別の macOS ユーザーの環境で Postman が 12.31.3 から 12.35.1 に更新され、ログに再び
auto-existing-upgradeが出て、CLI と Claude Code・Codex のプラグインが入りました。Cursor はcursor:already-installedでした。このマシンの config.toml にはtrusted_hashはありませんでした。 - 別のコメントによると、GitHub Copilot CLI の
~/.copilot/settings.jsonにも Postman の marketplace とプラグインが入っており、Postman のメニューにあるアンインストール項目では Copilot から消えなかったそうです。 - @daniiie7 によると、12.35.1 の Mac 版を展開すると、自動インストールするかどうかは機能フラグで決まり、新規ダウンロードのユーザーも対象になり得ます。
- @szchan111 や @Curingieul の投稿で英語圏・中国語圏の開発者に広まり、X ではトレンドニュースにもなっています。
Postman の回答:11 月 3 日(米国時間)、Postman 社員の zecoquit が issue で回答しました。多くのユーザーが CLI とプラグインを別々に入れて連携させるのに苦労していたため、デスクトップ版に同梱したこと、ダウンロードページとアプリの更新フローで説明していること、アプリ内からアンインストールできることを説明しています。さらに「we've heard you」として、特に既存ユーザー向けに opt-in を分かりやすくし、指摘されたフックの承認とセッション開始時の動作を見直し、変更があれば issue で知らせるとしています。
確認すべき人
- macOS で Postman デスクトップ版にログインして使っていて、最近開いたか更新した(報告は 12.33.4 と 12.35.1)。
- 同じマシンに Claude Code、Codex、Cursor、GitHub Copilot CLI のどれかが入っている。
- Codex が Postman の MCP サーバーへのログインを何度も求める、または API 作業のたびに Postman のスキルに触れる。
Postman を使っていない人でも、同じ方法でサードパーティのツールがエージェントに何を追加したか確認できます。
私たちの再現テスト
テスト環境:2026 年 11 月 4 日 17:20〜17:25(北京時間)、Linux、Claude Code 2.1.318、codex-cli 0.166.0、@postman/postman-plugin 0.6.0(Postman が管理する npm パッケージ)、aicodewith のキー。HOME と CODEX_HOME は新しく作った隔離ディレクトリに向け、実際の設定には触れていません。
Mac 版の Postman は手元にないため、「デスクトップ版を開くと自動で入る」部分は再現していません。issue のログには "installer":"script" とあります。私たちは Postman 公式ドキュメントの検出インストーラー npx @postman/postman-plugin install --agent claude-code,codex --yes を使いました。デスクトップ版が同じスクリプトを使っているかは確認できませんが、書き込まれた項目は報告と一致しています。
| 手順 | 結果 | 所要時間 |
|---|---|---|
| npx @postman/postman-plugin install(Claude Code + Codex) | 両方にインストール。Approved Postman's Codex session-start hook. と表示 | 11.6 秒 |
| インストール後に codex exec を 1 回 | hook: SessionStart が実行され、セッション記録に Postman の <EXTREMELY_IMPORTANT> の指示。Postman MCP はログインを要求 | 3.0 秒 |
| インストール後に claude -p を 1 回 | トランスクリプトに SessionStart:startup フックの結果があり、中身は同じ指示 | 2.7 秒 |
| npx @postman/postman-plugin remove --dry-run | プレビューのみ、config.toml は変わらず | 1.3 秒 |
| npx @postman/postman-plugin remove | 両方のプラグインは削除。Codex の marketplace と trusted_hash は残る | 2.2 秒 |
| 手動クリーンアップ後に codex exec でファイル作成と実行 | clean-ok を出力、フックも Postman の指示もなし | 11.8 秒 |
| 手動クリーンアップ後に claude -p でファイル作成と実行 | clean-ok-cc を出力 | 9.4 秒 |
さらに、エージェント別ドキュメントにある Codex ネイティブのコマンドでも 1 回インストールしました。config.toml にはプラグインと marketplace が入りましたが trusted_hash はなく、codex exec でもフックは実行されず、セッション記録に指示もありませんでした。これは「Codex 自身の方法で入れるとフックは未信頼で始まり、Codex で承認を求められる」というドキュメントの説明どおりです。つまり、フックが毎回実行されるかどうかは config.toml のあの trusted_hash 1 行で決まります。
ステップ 1:Claude Code を確認する
# 1) Installed plugins (user and project scope)
claude plugin list
# 2) Plugins and marketplaces turned on in your user settings
grep -n -i -E 'postman|enabledPlugins|extraKnownMarketplaces|"hooks"' ~/.claude/settings.json
# 3) MCP servers, including the ones a plugin brings in
claude mcp list
grep -n -i postman ~/.claude.json
# 4) Install records with timestamps
cat ~/.claude/plugins/installed_plugins.json
Postman プラグインが入っているときの実際の出力:
$ claude plugin list
Installed plugins:
❯ postman@claude-plugins-official
Version: 2.0.1
Scope: user
Status: ✔ enabled
$ claude mcp list
plugin:postman:postman: https://mcp.postman.com/mcp (HTTP) - ! Needs authentication
~/.claude/settings.json に追加された 2 つのブロック:
"extraKnownMarketplaces": {
"claude-plugins-official": {
"source": {
"source": "github",
"repo": "anthropics/claude-plugins-official"
}
}
},
"enabledPlugins": {
"postman@claude-plugins-official": true
}
claude-plugins-official は Anthropic 公式のプラグインマーケットプレイスなので、それ自体は問題ありません。見るべきは enabledPlugins に自分で入れた覚えのないプラグインがあるかです。Postman の SessionStart フックはプラグイン自身の hooks/hooks.json にあり、settings.json の hooks には出てきません。settings.json だけでは分からないので、claude plugin list で確認してください。
ステップ 2:Codex の config.toml を確認する
codex plugin list
codex plugin marketplace list
codex mcp list
# Section names only (no keys are printed)
grep -n -E '^\[(marketplaces|plugins|hooks|mcp_servers)' ~/.codex/config.toml
# Hook trust records
grep -n -A2 'hooks.state' ~/.codex/config.toml
Postman プラグインが入っているとき:
$ codex plugin list
PLUGIN STATUS VERSION SOURCE
postman@postman installed, enabled 1.3.0 ~/.codex/.tmp/marketplaces/postman
$ codex plugin marketplace list
MARKETPLACE ROOT
postman ~/.codex/.tmp/marketplaces/postman
$ codex mcp list
Name Url Bearer Token Env Var Status Auth
postman-mcp https://mcp.postman.com/mcp - enabled Not logged in
再現テストで config.toml に追加された内容(trusted_hash は issue と一致):
[marketplaces.postman]
source_type = "git"
source = "https://github.com/postmanlabs/postman-plugin.git"
ref = "main"
[plugins."postman@postman"]
enabled = true
[hooks.state]
[hooks.state."postman@postman:hooks/codex-hooks.json:session_start:0:0"]
trusted_hash = "sha256:b67ddd1ece328f5a6f9103ce011bb58adb8411daea644f284732cff85d15cbb3"
trusted_content_hash = "sha256:30a87cda8b01827030f3a7572a88bef9e2ff199d95bd50915b4dd5bb9d5e0023"
3 つの部分は分けて読みます。
[marketplaces.xxx]:プラグインの取得元。Git リポジトリを指します。[plugins."xxx@xxx"] enabled = true:プラグインが有効で、スキルと MCP サーバーが読み込まれます。[hooks.state."...:session_start:..."]とtrusted_hash:フックが信頼済みで、毎回のセッションで実行されます。Codex で自分が承認した覚えのないフックにtrusted_hashがあれば、真っ先に消すべき項目です。
プラグインが入った状態の codex exec ログ:
$ codex exec --skip-git-repo-check "<prompt>"
ERROR rmcp::transport::worker: worker quit with fatal: Transport channel closed,
when AuthRequired(... "https://mcp.postman.com/.well-known/oauth-protected-resource/mcp" ...)
hook: SessionStart
hook: SessionStart Completed
フックが注入する指示の冒頭(Postman プラグインリポジトリの hooks/session-start-context.md):
<EXTREMELY_IMPORTANT>
You have the Postman plugin.
Before responding to any non-trivial API engineering task — designing, implementing,
mocking, testing, monitoring, documenting, or deploying an API or Postman Flow — load
the `postman:api-engineer` skill and follow it. ...
過去のセッションに注入されたかどうかは、セッション記録を検索すれば分かります。
# Codex: sessions whose context received the hook text
grep -l 'EXTREMELY_IMPORTANT' ~/.codex/sessions/*/*/*/*.jsonl
# Claude Code: transcripts with a SessionStart hook result carrying that text
grep -l 'EXTREMELY_IMPORTANT' ~/.claude/projects/*/*.jsonl
再現テストでは、インストール後のセッションは両方ともヒットし、クリーンアップ後のセッションはどちらもヒットしませんでした。
ステップ 3:Cursor、Copilot CLI、Postman CLI を確認する
# Cursor (paths used by Postman's installer source)
ls -d ~/.cursor/plugins/local/postman ~/.cursor/plugins/cache/cursor-public/postman 2>/dev/null
# GitHub Copilot CLI
grep -n -i postman ~/.copilot/settings.json 2>/dev/null
# Postman CLI dropped next to the desktop app
ls -l ~/.local/bin | grep -i postman
Cursor の 2 つのパスは Postman プラグインのインストーラーのソースから取りました。ローカルクローンが ~/.cursor/plugins/local/postman、Cursor マーケットプレイスのコピーが ~/.cursor/plugins/cache/cursor-public/postman です。Copilot CLI のパスは issue のコメントによるものです。
削除する方法
方法 1:Postman の公式コマンド
Postman 公式ドキュメントによると、検出インストーラーは status、remove(別名 uninstall)、--dry-run に対応しています。
# What is installed, per agent
npx @postman/postman-plugin status
# Preview the removal, nothing is changed
npx @postman/postman-plugin remove --dry-run
# Remove from every detected agent (alias: uninstall)
npx @postman/postman-plugin remove
# Or only some agents
npx @postman/postman-plugin remove --agent claude-code,codex
remove の実際の出力:
Found 2 coding agents. Postman in each:
Claude Code installed postman@claude-plugins-official 2.0.1
Codex installed postman@postman 1.3.0
Claude Code
$ claude plugin uninstall postman@claude-plugins-official --scope user --json
done: uninstalled postman@claude-plugins-official
Codex
$ codex plugin remove postman@postman --json
done: removed postman@postman
Summary:
Claude Code done uninstalled postman@claude-plugins-official
Codex done removed postman@postman
Postman の社員はアプリ内からもアンインストールできると述べています。issue のコメントによると、メニューは Help → Postman CLI and Plugins → Uninstall Postman Coding Agent Plugin です。
方法 2:残りを手作業で消す
公式の remove の後も、config.toml には次が残っていました。
# ~/.codex/config.toml after "npx @postman/postman-plugin remove"
[marketplaces.postman]
source_type = "git"
source = "https://github.com/postmanlabs/postman-plugin.git"
ref = "main"
[hooks.state]
[hooks.state."postman@postman:hooks/codex-hooks.json:session_start:0:0"]
trusted_hash = "sha256:b67ddd1ece328f5a6f9103ce011bb58adb8411daea644f284732cff85d15cbb3"
trusted_content_hash = "sha256:30a87cda8b01827030f3a7572a88bef9e2ff199d95bd50915b4dd5bb9d5e0023"
~/.claude/plugins/cache/claude-plugins-official/postman と ~/.codex/plugins/cache/postman のディレクトリも残っていました。次の順で片付けます。
# --- Codex ---
codex plugin remove postman@postman # if codex plugin list still shows it
codex plugin marketplace remove postman
cp ~/.codex/config.toml ~/.codex/config.toml.bak
# Open ~/.codex/config.toml and delete the whole table
# [hooks.state."postman@postman:hooks/codex-hooks.json:session_start:0:0"]
# (the header line plus trusted_hash and trusted_content_hash)
rm -rf ~/.codex/plugins/cache/postman
# --- Claude Code ---
claude plugin uninstall postman@claude-plugins-official --scope user # if still listed
rm -rf ~/.claude/plugins/cache/claude-plugins-official/postman
# --- Cursor ---
rm -rf ~/.cursor/plugins/local/postman
# then uninstall Postman from Cursor's own plugin marketplace view
# --- Postman CLI, only if you do not use it ---
ls -l ~/.local/bin | grep -i postman
最後にもう一度確認し、実際のタスクを走らせて両方のエージェントが正常か確かめます。
$ grep -n -i -E 'postman@|marketplaces\.postman|trusted_hash' ~/.codex/config.toml ~/.claude/settings.json
(no output, exit 1)
$ codex plugin list | grep -i 'postman@'
(no output, exit 1)
$ codex mcp list
No MCP servers configured yet. Try `codex mcp add my-tool -- my-command`.
$ claude plugin list
No plugins installed. Use `claude plugin install` to install a plugin.
$ codex exec --skip-git-repo-check "Create hello.py that prints 'clean-ok', run it with python3, and report its output."
exec
/bin/bash -lc 'python3 hello.py' in <test-dir>/ws
succeeded in 0ms:
clean-ok
[exit 0, 11.8 s]
$ claude -p "Create hello2.py that prints 'clean-ok-cc', run it with python3, and report its output." \
--allowedTools "Write,Bash(python3:*)"
Output: `clean-ok-cc`
[exit 0, 9.4 s]
~/.claude/settings.json の extraKnownMarketplaces.claude-plugins-official は公式マーケットプレイスなので残して構いません。Claude Code のプラグインを使わないなら、このブロックも消せます。
再発を防ぐ
- デスクトップアプリ、IDE、CLI を更新した後に設定を比較する。 次のスナップショットはセクション名とプラグイン名だけを記録し、キーは書き出しません。
# Snapshot without secrets: Codex section names, Claude Code plugin/marketplace/hook names
mkdir -p ~/.agent-audit
grep -E '^\[' ~/.codex/config.toml > ~/.agent-audit/codex.txt
python3 - > ~/.agent-audit/claude.txt <<'EOF'
import json, os
d = json.load(open(os.path.expanduser('~/.claude/settings.json')))
for k in ('enabledPlugins', 'extraKnownMarketplaces', 'hooks'):
print(k, sorted(d.get(k, {})))
EOF
# After updating a desktop app, IDE or CLI, compare with the snapshot
diff ~/.agent-audit/codex.txt <(grep -E '^\[' ~/.codex/config.toml)
インストール前後を比較した結果:
$ diff ~/.agent-audit/codex.txt <(grep -E '^\[' ~/.codex/config.toml)
2a3,6
> [marketplaces.postman]
> [plugins."postman@postman"]
> [hooks.state]
> [hooks.state."postman@postman:hooks/codex-hooks.json:session_start:0:0"]
# Claude Code, before and after
enabledPlugins [] -> ['postman@claude-plugins-official']
extraKnownMarketplaces [] -> ['claude-plugins-official']
- 自分で承認したフックだけを信頼する。 Codex に見覚えのない
trusted_hashがあれば消してください。次回の起動時に Codex が改めて承認を求めます。 - 使わない MCP はオフにする。 ログインを求め続けるリモート MCP は、起動のたびに接続を試みます。
- プロジェクト単位のファイルも見る。 リポジトリ内の
AGENTS.mdや.claude/settings.jsonもエージェントの動作を変えます。Downloads の AGENTS.md で Codex と Claude Code が乗っ取られる?を参照してください。 - エージェントに権限の境界を設ける。 望まないフックが紛れ込んでも、サンドボックスと承認ポリシーが範囲外の操作を止めます。Codex のサンドボックスと /permissionsを参照してください。
aicodewith のキーを使うときに設定をきれいに保つ
フックはあなたのユーザー権限で実行されるコマンドなので、そのユーザーが読めるファイル、つまりキーが書かれた設定ファイルも読めます。設定ファイルには自分が把握しているものだけを置きましょう。クリーンアップ後のきれいな Codex 設定はこれだけです(Codex はグローバル config.toml の experimental_bearer_token を使います)。
# ~/.codex/config.toml
model = "gpt-6.1-sol"
model_provider = "aicodewith"
[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "YOUR_API_KEY"
[projects."/path/to/your/repo"]
trust_level = "trusted"
Claude Code の ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
}
}
クリーンアップで見覚えのないフックやプラグインが見つかった場合は、削除したうえでコンソールで新しいキーを発行し、上の 2 つのファイルを更新してください。
API Key を作成して Claude Code、Codex、Cursor に接続 →
設定項目の詳細は Codex config.toml 設定ガイドと Claude Code をサードパーティ API に接続する方法をご覧ください。
よくある質問
Postman プラグインはデータをどこかへ送りますか?
報告者と The New Stack によると、issue にはデータの収集や送信を示す証拠はありません。報告の内容は、明確な同意なしにプラグイン、フック、リモート MCP が他のツールに追加されたことです。Postman の MCP は未ログインでは接続できず、私たちの再現でも Not logged in / Needs authentication でした。
プラグインだけ消して trusted_hash が残っていたら影響はありますか?
プラグインがなければフックの実行ファイルもないので動きません。ただし信頼の記録は config.toml に残り続け、同じフックが再び入ると確認なしですぐ実行されます。あわせて消しておきましょう。
Postman プラグインを自分で入れた場合も消すべきですか?
不要です。自分で npx @postman/postman-plugin を実行した場合、Postman のドキュメントによるとインストーラーが Codex のフックを自動で承認します。自分で承認したい場合は、Codex ネイティブの codex plugin add でインストールしてください。
Cursor や Copilot CLI だけ使っている場合も確認が必要ですか?
必要です。issue のコメントによると、12.35.1 のログに cursor:already-installed があり、Copilot CLI の settings.json にも Postman の項目が見つかっています。
クリーンアップ後に Claude Code や Codex が動かなくなったら?
プロバイダー設定を消していないか確認してください。Codex は [model_providers.aicodewith]、Claude Code は ANTHROPIC_BASE_URL と ANTHROPIC_AUTH_TOKEN です。config.toml を編集する前に cp でバックアップを取っておけば、すぐ元に戻せます。



