概述
在 Cursor(macOS)上,DevCodex 的用户级适配会把 progressive-skill-route hook 写进 ~/.cursor/hooks.json。这条 hook 会 fail-close 所有写操作(StrReplace / Write / Shell),连 CallMcpTool 调 skill_route 也会被拦住。结果是:hook 要求先走 skill_route,但 skill_route 自己也被拦,形成死锁。
只卸载 Cursor 插件,或只执行 npm uninstall -g devcodex,不能恢复 Cursor 写入。必须手动删掉用户级残留文件(~/.cursor/hooks.json、~/.cursor/devcodex/ 等),完全退出 Cursor 并开新对话后,写入才恢复正常。
README 当前的卸载说明只有:
npm uninstall -g devcodex
这不足以恢复 Cursor / Codex / Claude 环境。
环境
- 宿主:Cursor 本地 IDE(不是 Cloud Agent)
- 系统:macOS(
darwin 25.5.0)
- 安装方式:GitHub / npm 发布包;之后从 Cursor 卸载,并执行了
npm uninstall -g
- 本机没有其他第三方 hook / skill 插件
- 不限于单个仓库:
smart-listing 和 merchant-user 写入都被拦
实际现象
-
安装 DevCodex 后,Cursor Agent 可以读文件,但任何写入都会被拒绝:
Error: progressive-skill-route
-
同一条 hook 还会拦住:
CallMcpTool → skill_route(catalog / 空参数)
profile_compose_entry_check
- 读取 DevCodex 自己的 skill 文件
- 对
~/.cursor 做 glob / shell
hook 要求的恢复路径(先跑 skill_route)本身也被拦,形成死锁。
-
拦截是 会话级全局,不是某个项目特有。换到第二个仓库同样写不进去。
-
从 Cursor 卸掉插件后,已经打开的会话里仍然存在:
- MCP:
plugin-devcodex-workspace-devcodex-memory、plugin-devcodex-workspace-devcodex-profile 仍为 ready
- 同样的
progressive-skill-route 拒绝
-
只有手动删除用户级适配残留,并完全退出 Cursor(Cmd+Q)后开 新对话,写入才恢复。
真正让 Cursor 一直坏掉的残留
这些路径来自 README / global-host-target.js,以及本机实际残留:
| 路径 |
影响 |
~/.cursor/hooks.json |
Cursor 用户级 hook,正是 progressive-skill-route 的执行入口 |
~/.cursor/devcodex/plugins/devcodex-workspace |
动态插件 / MCP |
~/.codex/devcodex/、~/.codex/hooks.json、~/.codex/config.toml 里的 managed MCP 段 |
Codex 适配残留 |
~/.claude/devcodex/、~/.claude/settings.json 里合并进去的 hooks |
Claude 适配残留 |
~/.agents/devcodex/ |
共用运行时 / full fallback 指令 |
让用户去删整个 ~/.cursor / ~/.codex / ~/.claude 不合理,里面还有宿主自己的登录态、设置和历史。用户现在只能自己猜哪些文件是 DevCodex 写的。
这也和 CLI 里的说明一致:第一批还不支持自动删除全局 host config。
期望
-
完整卸载
npm uninstall -g devcodex(或新增 devcodex uninstall / devcodex global-adapters remove)应清掉用户级宿主配置里由 DevCodex 写入的条目。
- 保留
hooks.json / settings.json / config.toml / AGENTS.md 里非 DevCodex 的内容。
- 若仍需手工步骤,请在文档里写明精确路径。
-
Cursor SkillRoute 不能死锁
- 如果
skill_route 跑不起来,PreToolUse 应该 fail open(或至少等路由成功后再拦截),不要直接拒绝 StrReplace / Write / Shell / CallMcpTool(skill_route)。
- 要求先走
skill_route 的 hook,绝不能反过来拦截 skill_route。
-
文档
- README「卸载」应写明:卸 Cursor 插件 / npm 包 不会卸载已经打开的会话;残留的
~/.cursor/hooks.json 会继续 fail-close 写入。
- 增加恢复说明:删哪些文件,然后完全退出宿主并开新对话。
现状
- README 卸载只有
npm uninstall -g devcodex。
- 用户级
~/.cursor/hooks.json 和 ~/.cursor/devcodex/ 会留下。
- 不删这些文件并重启,Cursor Agent 就一直不能写。
progressive-skill-route 会把满足这条 hook 所必需的工具一并拦掉。
恢复写入的临时做法
npm uninstall -g devcodex
rm -f ~/.cursor/hooks.json
rm -rf ~/.cursor/devcodex
# 如存在,一并删除 ~/.codex/devcodex、~/.claude/devcodex、~/.agents/devcodex
然后完全退出 Cursor,重新打开,再开一个 新对话。这样写入就恢复了。
相关
另有一条 issue 描述安装后运行时就把写入死锁。那是运行时问题;本 issue 描述的是 卸载后用户级适配残留,导致 Cursor 仍然不能写。
概述
在 Cursor(macOS)上,DevCodex 的用户级适配会把
progressive-skill-routehook 写进~/.cursor/hooks.json。这条 hook 会 fail-close 所有写操作(StrReplace/Write/Shell),连CallMcpTool调skill_route也会被拦住。结果是:hook 要求先走skill_route,但skill_route自己也被拦,形成死锁。只卸载 Cursor 插件,或只执行
npm uninstall -g devcodex,不能恢复 Cursor 写入。必须手动删掉用户级残留文件(~/.cursor/hooks.json、~/.cursor/devcodex/等),完全退出 Cursor 并开新对话后,写入才恢复正常。README 当前的卸载说明只有:
这不足以恢复 Cursor / Codex / Claude 环境。
环境
darwin 25.5.0)npm uninstall -gsmart-listing和merchant-user写入都被拦实际现象
安装 DevCodex 后,Cursor Agent 可以读文件,但任何写入都会被拒绝:
同一条 hook 还会拦住:
CallMcpTool→skill_route(catalog/ 空参数)profile_compose_entry_check~/.cursor做 glob / shellhook 要求的恢复路径(先跑
skill_route)本身也被拦,形成死锁。拦截是 会话级全局,不是某个项目特有。换到第二个仓库同样写不进去。
从 Cursor 卸掉插件后,已经打开的会话里仍然存在:
plugin-devcodex-workspace-devcodex-memory、plugin-devcodex-workspace-devcodex-profile仍为readyprogressive-skill-route拒绝只有手动删除用户级适配残留,并完全退出 Cursor(
Cmd+Q)后开 新对话,写入才恢复。真正让 Cursor 一直坏掉的残留
这些路径来自 README /
global-host-target.js,以及本机实际残留:~/.cursor/hooks.jsonprogressive-skill-route的执行入口~/.cursor/devcodex/plugins/devcodex-workspace~/.codex/devcodex/、~/.codex/hooks.json、~/.codex/config.toml里的 managed MCP 段~/.claude/devcodex/、~/.claude/settings.json里合并进去的 hooks~/.agents/devcodex/让用户去删整个
~/.cursor/~/.codex/~/.claude不合理,里面还有宿主自己的登录态、设置和历史。用户现在只能自己猜哪些文件是 DevCodex 写的。这也和 CLI 里的说明一致:第一批还不支持自动删除全局 host config。
期望
完整卸载
npm uninstall -g devcodex(或新增devcodex uninstall/devcodex global-adapters remove)应清掉用户级宿主配置里由 DevCodex 写入的条目。hooks.json/settings.json/config.toml/AGENTS.md里非 DevCodex 的内容。Cursor SkillRoute 不能死锁
skill_route跑不起来,PreToolUse 应该 fail open(或至少等路由成功后再拦截),不要直接拒绝StrReplace/Write/Shell/CallMcpTool(skill_route)。skill_route的 hook,绝不能反过来拦截skill_route。文档
~/.cursor/hooks.json会继续 fail-close 写入。现状
npm uninstall -g devcodex。~/.cursor/hooks.json和~/.cursor/devcodex/会留下。progressive-skill-route会把满足这条 hook 所必需的工具一并拦掉。恢复写入的临时做法
然后完全退出 Cursor,重新打开,再开一个 新对话。这样写入就恢复了。
相关
另有一条 issue 描述安装后运行时就把写入死锁。那是运行时问题;本 issue 描述的是 卸载后用户级适配残留,导致 Cursor 仍然不能写。