教程2026-11-04 · 智涌AI

Agent 插件自查:Claude Code、Codex 的钩子和 MCP 怎么查

Agent 插件自查教程头图:终端里依次运行 claude plugin list、claude mcp list、/hooks,grep Codex config.toml 的插件市场与 hooks.state trusted_hash 信任记录,最后 claude plugin disable 停用插件

Postman 桌面版升级时自动给 Claude Code 和 Codex 装插件、加启动钩子、接远程 MCP,这件事 11 月 3 日在开发者圈传开。你不用 Postman,也该查一遍自己的 Agent:插件、钩子和 MCP 服务都会进 Agent 的上下文,钩子还会以你的用户权限执行命令。下面按 Anthropic 与 OpenAI 官方文档(2026-11-04 北京时间查阅),给 Claude Code 和 Codex 各列一套「看清楚、关得掉」的命令。

插件不只是几段提示词

Claude Code 的插件安全文档第一句就是:你装的插件能以你的用户权限在机器上执行任意代码。一个插件可以带 Skill 和命令(进上下文,影响 Agent 怎么用手上的工具),也可以带钩子、后台监视进程、MCP 和 LSP 服务、bin/ 可执行文件。权限规则和沙箱管的是 Agent 发起的工具调用;钩子、监视进程和 MCP 服务进程在沙箱外运行。

Codex 的插件结构类似,可以带 Skill、MCP 服务和钩子。不同的是,Codex 给非托管钩子加了一道闸:钩子要先在 /hooks 里审阅并信任,Codex 按钩子定义的哈希记下信任,定义一变就要重新审。这条记录写在 config.toml 里。按 Postman issue #14370 贴出的源码,它的安装程序装完插件后会调用 Codex 接口,替自己的 SessionStart 钩子写入 trusted_hash。

信任记录也是一行配置,同一个用户账号下的程序都写得进去。

自查就看三样:装了什么插件、哪些钩子会跑、连着哪些 MCP 服务。

前置条件

两家的入口对照

要查的Claude CodeCodex
插件记在哪~/.claude/settings.json 的 enabledPlugins(用户级);项目级在 .claude/settings.json、.claude/settings.local.json~/.codex/config.toml 的 [plugins."名字@市场"];项目级在 .codex/config.toml
列出插件claude plugin list,或会话里 /plugin 的 Installed 页会话里 /plugins,按市场分页
看钩子/hooks(只读,标出来源)/hooks(可审阅、信任、单个停用)
钩子要不要你点头写进设置文件就生效非托管钩子要先信任,记在 hooks.state
全部钩子一键关"disableAllHooks": true[features] 下 hooks = false
列 MCPclaude mcp listcodex mcp list

第一步:查 Claude Code

# 插件:每个都有 Version、Scope、Status
claude plugin list

# 某个插件每轮会话固定占多少 token、由哪些组件组成
claude plugin details <插件名>

# 你登记过哪些插件市场(第三方市场在这里现形)
claude plugin marketplace list

# MCP 服务
claude mcp list

然后进一次会话,输入 /hooks。这个菜单只读,会给每个钩子标上来源:用户设置、项目设置、本地设置、某个插件,或当前会话。选中一个能看到它实际执行的完整命令和定义所在的文件。重点看 SessionStart 和 UserPromptSubmit,这两类会往上下文里塞文字。Postman 那个钩子就挂在会话启动上,让 Agent 碰到 API 类任务先加载它的 Skill。

再对一下文件。官方文档说明,用户级插件记在 ~/.claude/settings.json 的 enabledPlugins 里;issue 里的报告者还在 ~/.claude/plugins/installed_plugins.json 看到了安装时间 installedAt,可以拿它和你记得的操作时间对一对。

第二步:查 Codex

# 插件市场、插件开关、钩子信任记录
grep -nE '^\[(marketplaces|plugins)\.|^\[hooks\.state|trusted_hash' ~/.codex/config.toml

# 用户级钩子文件
ls -l ~/.codex/hooks.json 2>/dev/null

# 插件缓存(每个版本一个目录)
ls ~/.codex/plugins/cache/ 2>/dev/null

# MCP 服务
codex mcp list

Postman issue 里,被改过的 config.toml 多了三段:[marketplaces.postman] 指向 Postman 的 GitHub 仓库,[plugins."postman@postman"] 写着 enabled = true,还有一段 [hooks.state."postman@postman:hooks/codex-hooks.json:session_start:0:0"],里面是 trusted_hash。你的文件里每一个 hooks.state 条目都应该对得上一次你自己在 /hooks 里点过的信任。

接着在 Codex 会话里打开 /hooks,它会列出各个来源的钩子,等审阅的会标出来;再打开 /plugins,看看有没有不认识的市场页签。

第三步:一段脚本扫两家

把前两步并成一段,只读,不改任何文件:

#!/usr/bin/env bash
echo "== Claude Code"
command -v claude >/dev/null && claude plugin list && claude mcp list
grep -n -A20 '"enabledPlugins"' ~/.claude/settings.json 2>/dev/null
for f in .claude/settings.json .claude/settings.local.json; do
  [ -f "$f" ] && echo "-- $f" && grep -nE '"(enabledPlugins|hooks|disableAllHooks)"' "$f"
done

echo "== Codex"
grep -nE '^\[(marketplaces|plugins)\.|^\[hooks|trusted_hash|^hooks *=' \
  ~/.codex/config.toml .codex/config.toml 2>/dev/null
ls ~/.codex/hooks.json .codex/hooks.json 2>/dev/null
command -v codex >/dev/null && codex mcp list

echo "== Copilot CLI"
grep -nE 'extraKnownMarketplaces|enabledPlugins' ~/.copilot/settings.json 2>/dev/null

最后那段 Copilot 是 issue 评论里补充的:有用户在 ~/.copilot/settings.json 里也找到了 Postman 的市场和插件开关。在项目根目录跑一次,项目级配置也一起看了。

第四步:关掉或卸掉

先停用,确认没东西坏了再卸载。

# Claude Code:停用 / 卸载(卸载默认作用于用户级)
claude plugin disable <插件>@<市场>
claude plugin uninstall <插件>@<市场> --scope user

# 不信任整个市场:移除它,会连带卸载从它装的所有插件
claude plugin marketplace remove <市场>

# 临时关掉全部钩子(写进 ~/.claude/settings.json)
#   "disableAllHooks": true
# 只对这一次运行生效:
claude --settings '{"disableAllHooks": true}'
# Codex:在 config.toml 里停用插件但不卸载(Codex 插件文档的写法)
[plugins."某插件@某市场"]
enabled = false

# 紧急情况:全部钩子先停
[features]
hooks = false

Codex 的卸载在 /plugins 里做:打开插件详情选卸载;已装的插件按空格可以切换开关。单个钩子在 /hooks 里停用。你没点过信任却出现在 hooks.state 里的条目,可以删掉。按 Codex 文档,没有信任记录的钩子会被标成待审阅并跳过,等你在 /hooks 里重新决定。

Claude Code 卸载插件后,文件会在 ~/.claude/plugins/cache/ 下留 14 天才被后台清理;想立刻清掉,删 ~/.claude/plugins/cache/<市场>/<插件>/。

常见坑

完成标准

最后

现在就把第三步那段脚本跑一次。查出来的钩子想自己写几条护栏,可以接着看 Claude Code Hooks 教程;Codex 的审批和沙箱怎么配,见 Codex 配置教程。Postman 事件本身的经过在 这条快讯里。

关注公众号「智涌AI速递」

每天的 AI 快讯、实用教程和 AI项目实测,也会同步发到微信公众号。在微信里搜索「智涌AI速递」就能关注;不用微信的话,可以用 RSS 订阅本站。