Skip to content

claude CLI 提供 16 类启动参数,覆盖会话恢复、模型选择、权限控制、输出格式、系统提示、Agent 配置、MCP 加载、预算限制等所有场景。掌握 -p/--print(无交互模式)、--permission-mode--append-system-prompt--add-dir 这几个核心参数,可以解锁绝大多数自动化和集成场景。

Claude Code CLI 启动参数完全参考:16 类命令行选项与环境变量

会话管理

参数简写说明
--continue-c继续当前目录最近的会话
--resume-r通过 ID 或名称恢复指定会话,不带参数显示选择器
--from-pr <NUMBER|URL>恢复关联到指定 GitHub PR 的会话
--fork-session恢复时创建新会话 ID(与 --resume--continue 配合使用)
--session-id <UUID>使用指定的会话 ID(必须是有效 UUID)
--no-session-persistence禁用会话持久化(仅 print 模式)
--remote在 claude.ai 创建新的 web 会话
--teleport将 web 会话拉回本地终端

模型与配置

参数说明
--model <NAME>设置模型:别名(sonnet/opus/haiku)或完整 ID
--fallback-model <NAME>默认模型过载时的备用模型(仅 print 模式)
--betas <LIST>包含在 API 请求中的 beta 头(仅 API key 用户)

权限与安全

参数说明
--dangerously-skip-permissions跳过所有权限提示,极度谨慎使用
--allow-dangerously-skip-permissions允许后续激活权限绕过,但不立即激活
--permission-mode <MODE>以指定权限模式启动:default/plan/acceptEdits/bypassPermissions
--allowedTools <TOOLS>无需提示即可执行的工具(permission rule 语法)
--disallowedTools <TOOLS>从模型上下文完全移除的工具
--tools <TOOLS>限制 Claude 可以使用的内置工具("" 禁用所有)
--permission-prompt-tool <TOOL>在非交互模式中处理权限提示的 MCP 工具

--dangerously-skip-permissions 替代方案:在 settings.json 中配置 permissions.defaultMode: "bypassPermissions"permissions.allow 规则,避免在命令行中使用危险参数。


输出与格式

参数说明
--print / -p无交互模式(headless/SDK 模式),打印响应后退出
--output-format <FORMAT>输出格式:text/json/stream-json
--input-format <FORMAT>输入格式:text/stream-json
--json-schema <SCHEMA>获取符合 schema 的验证 JSON(仅 print 模式)
--include-partial-messages包含流式分片事件(需 --printstream-json
--verbose启用详细日志,显示完整的逐轮输出

常用 -p 组合

bash
# 单次问答
claude -p "解释这段代码" < code.ts

# 输出 JSON
claude -p --output-format json "分析 src/"

# 流式输出
claude -p --output-format stream-json "写一篇文章"

# 限制轮次和预算
claude -p --max-turns 5 --max-budget-usd 0.5 "重构这个模块"

系统提示

参数说明
--system-prompt <TEXT>替换整个系统提示(不推荐,会丢失内置行为)
--system-prompt-file <PATH>从文件加载系统提示(仅 print 模式)
--append-system-prompt <TEXT>向默认系统提示追加自定义内容(推荐)
--append-system-prompt-file <PATH>向默认提示追加文件内容(仅 print 模式)

Agent 与 Subagent

参数说明
--agent <NAME>为当前会话指定 agent
--agents <JSON>通过 JSON 动态定义自定义 subagent
--teammate-mode <MODE>Agent 团队显示模式:auto/in-process/tmux

MCP 与插件

参数说明
--mcp-config <PATH|JSON>从 JSON 文件或字符串加载 MCP 服务器
--strict-mcp-config只使用 --mcp-config 中的 MCP,忽略其他配置
--plugin-dir <PATH>仅本次会话从指定目录加载插件(可重复使用)

目录与工作区

参数说明
--add-dir <PATH>添加额外工作目录,Claude 可以访问
--worktree / -w在隔离的 git worktree 中启动(从 HEAD 分支)

预算与限制

参数说明
--max-budget-usd <AMOUNT>API 调用最大美元金额(仅 print 模式)
--max-turns <NUMBER>限制 agentic turn 数量(仅 print 模式)

集成

参数说明
--chrome启用 Chrome 浏览器集成
--no-chrome本次会话禁用 Chrome 集成
--ide启动时自动连接到 IDE

初始化与维护

参数说明
--init运行初始化 hooks 并进入交互模式
--init-only只运行初始化 hooks 后退出
--maintenance运行维护 hooks 后退出

调试与诊断

参数说明
--debug <CATEGORIES>启用调试模式,可选分类过滤(如 "api,hooks"

Settings 覆盖

参数说明
--settings <PATH|JSON>从 JSON 文件或字符串加载 settings
--setting-sources <LIST>指定加载来源:user/project/local(逗号分隔)
--disable-slash-commands本次会话禁用所有 skills 和 slash commands

子命令

子命令说明
claude启动交互式 REPL
claude "query"带初始 prompt 启动 REPL
claude agents列出已配置的 agents
claude auth管理认证
claude doctor从命令行运行诊断
claude install安装或切换原生构建
claude mcp配置 MCP 服务器(add/remove/list/get/enable)
claude update更新到最新版本

启动专属环境变量

以下变量只能在 shell 中设置,不能通过 settings.jsonenv 键配置:

变量说明
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1启用实验性 Agent Teams
CLAUDE_BASH_NO_LOGIN=1跳过 BashTool 的 login shell
USE_BUILTIN_RIPGREP=0使用系统 ripgrep(Alpine Linux)
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1允许附加目录加载 CLAUDE.md
CCR_FORCE_BUNDLE=1claude --remote 强制打包上传本地仓库

其他可通过 settings.jsonenv 键配置的变量(如 MAX_THINKING_TOKENSCLAUDE_CODE_EFFORT_LEVELCLAUDE_CODE_SUBAGENT_MODEL 等)参见 Settings 配置参考


FAQ

Q: -p/--print 模式和交互模式有什么核心区别? A: -p 模式下 Claude 接收一个 prompt 后执行任务,任务结束后立即退出,不进入 REPL。适合 CI/CD 流水线、shell 脚本自动化、以及需要捕获输出的场景。--output-format json 可以获取结构化输出(包含工具调用详情)。

Q: --permission-mode acceptEdits--dangerously-skip-permissions 有什么区别? A: acceptEdits 只跳过文件编辑的确认提示,其他操作(如 Bash 命令)仍需确认;--dangerously-skip-permissions 跳过所有权限检查,包括执行 shell 命令。日常自动化推荐用 acceptEdits,配合 permissions.allow 白名单 bash 命令。

Q: 怎么在脚本中传入多行 prompt? A: 使用 heredoc 或管道:echo "分析这个文件" | claude -p,或 claude -p < prompt.txt。也可以用 --input-format stream-json 传入 JSON 流。

Q: --worktree 和 subagent 的 isolation: "worktree" 有什么区别? A: --worktree 是 CLI 参数,为整个主会话创建隔离的 git worktree;isolation: "worktree" 是 subagent frontmatter 字段,只为该 subagent 创建隔离 worktree,主会话不受影响。