启动参数看官方文档拒绝规则,从模型上下文中移除 Tool 或拒绝特定匹配Syntax--disallowedTools <rules>示例claude --disallowedTools "Bash(git log *)" "Edit"全网调研整理典型场景在 bypassPermissions 自动化流水线中,用黑名单屏蔽危险工具(如 Bash、Edit、Write),因为此模式下 --allowedTools 白名单失效将整个工具从模型上下文中完全移除(如 --disallowedTools "Edit" 使 Claude 无法修改文件,进入只读状态)精细屏蔽单个危险 Bash 子命令(如 "Bash(rm *)"),同时保留其余 Bash 能力禁用特定 MCP 工具或 subagent(如 "mcp__puppeteer__puppeteer_navigate" 或 "Agent(Explore)")防止不必要的浏览器/探索操作在不修改 settings.json 的前提下,临时为当次会话叠加额外限制,覆盖 allow 规则实用技巧裸工具名(如 "Bash")将整个工具从模型上下文中删除,Claude 不会尝试调用;带 specifier 的(如 "Bash(rm *)")仅在 Claude 尝试调用时拦截,工具本身仍可见与 --dangerously-skip-permissions / bypassPermissions 同时使用时,--disallowedTools 是唯一可靠的限制手段(--allowedTools 在该模式下无效,GitHub issue #12232 已关闭为 not planned)支持与 settings.json 的 permissions.deny 完全相同的语法,包括 Bash 通配符("Bash(git log *)")、MCP 前缀("mcp__server__tool")和 Agent specifier("Agent(Explore)")deny 规则在整个权限评估链中最先执行(deny→ask→allow),通过 --disallowedTools 添加的规则优先于任何 --allowedTools 或 settings allow 规则可将常用 deny 组合固化到 .claude/settings.json 的 permissions.deny 中,无需每次启动带 flag;CLI flag 等价于单次会话的临时追加常见坑Bash 子进程(如 Python/Node 脚本)直接操作文件不受 Edit/Write disallow 规则约束,需配合沙箱(--sandbox)才能实现 OS 级隔离"Bash(rm *)" 只匹配以 rm 开头的命令,绕过方式很多(变量、管道、子 shell),高安全场景应直接用裸 "Bash" 移除整个工具managed settings 中的 deny 规则无法被 --allowedTools 或任何低层级设置覆盖,但 --disallowedTools 仍可在 managed allow 之上追加限制(不能解除 managed deny)来源CLI reference - Claude Code DocsConfigure permissions - Claude Code DocsIssue #12232: --allowedTools has no effect with bypassPermissionsClaude Code Cheat Sheet - ShipyardClaude Code Permissions: Safe vs Fast Development Modes创建于v0.2.82最近更新v2.1.0变化次数2新增 2变化时间线(按版本倒序)新增v2.1.0· 2026/01/07 · 2026/01/07新增 CLI flag 用于通过 `Task(AgentName)` 语法禁用特定 agents新增v0.2.82· 2026/05/22 · 2026/05/22新增 flag 用于禁止使用特定工具上一个--disabled回到命令字典下一个--effort