命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
将当前会话整体迁移到一个新的工作目录,保留对话的 prompt cache(区别于只额外挂目录的 /add-dir)。需 v2.1.169+。
/cd <path>/cd packages/api/cd 是 Claude Code CLI 中的会话内 slash 命令,作用是把当前会话整体搬到一个新的工作目录,而不是新开会话、也不是临时多挂一个目录。
它和 /add-dir 是两个不同的命令、各管各的事:
/add-dir <path> —— 在不改变主工作目录的前提下,额外授予对另一个目录的文件访问权(当前目录仍是原来那个)。/cd <path> —— 把会话的主工作目录换成新目录:新目录的 CLAUDE.md 被加载、会话被重新落到新目录的 project storage(于是 --resume / --continue 之后从那里能找到它)。关键设计是保留 prompt cache:换目录时,新目录的 CLAUDE.md 是作为一条追加消息塞进对话,而不是重建整个 system prompt —— 所以不会因为换目录而把已经命中的缓存全部作废。
版本门槛:需要 Claude Code v2.1.169 或更高。早于该版本输入
/cd会报Unknown command: /cd。/cd在 v2.1.169 引入,v2.1.176 有一次 fixed。
在会话内,消息开头直接输入:
/cd path/to/new/dir
/cd 会提示你是否信任该目录,确认后才迁入。CLAUDE.md 生效,会话归属也随之转移到新目录的项目存储。那不该用 /cd,而用 /add-dir:它只扩展可访问范围,主工作目录不变。
Cd 权限规则限制 / 关闭 /cd/cd 的目标目录可以用 Cd 权限规则约束。注意一个重要事实:Cd 不是模型可调用的工具 —— Claude 自己调不动它,规则只在你本人手动运行 /cd 时才生效。
| 配置 | 效果 |
|---|---|
裸 Cd(deny) | 彻底禁用 /cd |
Cd(<path-pattern>)(deny) | 阻止匹配到的目标目录 |
任意一条 Cd allow 规则 | /cd 切换为白名单模式:解析后的目标必须命中某条 allow 规则,否则拒绝 |
不配置任何 Cd 规则 | 默认行为:遇到陌生目录提示你信任 |
路径 pattern 复用 Read/Edit 规则的 //(绝对)、~/(home)、/(项目根)三种锚:
| 规则 | 匹配 | 不匹配 |
|---|---|---|
Cd(~/code/*) | ~/code/app | ~/code/app/src、~/code |
Cd(~/code/**) | ~/code 及其下任意目录 | ~/code 之外的目录 |
Cd(**/node_modules) | 任意深度的 node_modules | node_modules/pkg |
deny 规则会检查目标的每一种拼法(包括它解析穿过的每一跳 symlink),所以为某条路径写的 deny 也会挡住"解析后等于它"的别名路径。
配置写在 settings.json 的 permissions 里,例如禁用一切 /cd:
{
"permissions": {
"deny": ["Cd"]
}
}
或只允许搬到某个工作区根下:
{
"permissions": {
"allow": ["Cd(~/work/**)"]
}
}
| 约束 | 说明 |
|---|---|
| 版本 | 需 v2.1.169+,更早版本报 Unknown command: /cd |
| 仅本人触发 | Cd 非模型工具,Claude 调不动,规则只对你手动 /cd 生效 |
| 信任提示 | 迁入从未工作过的目录会先提示信任 |
| 会话归属转移 | 迁入后 --resume / --continue 从新目录找会话,而非原目录 |
/add-dir 对比| 维度 | /cd <path> | /add-dir <path> |
|---|---|---|
| 主工作目录 | 改变(搬家) | 不变(只是多挂) |
新目录 CLAUDE.md | 加载(作为追加消息) | 默认不发现 |
| prompt cache | 保留(不重建 system prompt) | 不影响 |
| 会话存储归属 | 转移到新目录 | 不变 |
| 权限规则 | Cd(...) | 走 additionalDirectories / 工作目录规则 |
| 版本门槛 | v2.1.169+ | 早期即有 |
/cd packages/api 把会话搬过去,让该子包的 CLAUDE.md 与项目存储生效,而不必丢掉当前上下文重开。/cd ../project-b 直接迁到 B 项目继续,prompt cache 不被整体作废。/cd:管理员在 managed settings 写 Cd(~/work/**) 白名单,防止会话被搬到工作区之外的目录。/cd 当成 /add-dir 的别名:它不是。/cd 会真的搬家(改主目录、转移会话存储),只想多挂一个目录读文件请用 /add-dir。/cd:Cd 不是模型可调用工具,只有你本人手输 /cd 才触发,所以也别指望在 prompt 里让模型"切目录"。Unknown command:不是命令拼错,是版本太旧,升级到 2.1.169+。Cd allow 规则,/cd 就进入白名单模式,目标不在白名单内一律拒绝——别只加一条窄 allow 就忘了它会关掉其余所有目标。--resume 要从新目录而非原目录恢复。permissions.deny 加裸 Cd 即彻底禁用 /cd。Cd(<path-pattern>) deny 黑名单,或加 Cd(...) allow 进入白名单模式。/cd 是一次性操作,运行后无需"退出",再 /cd 别处即可。