Appearance
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 | 包含流式分片事件(需 --print 和 stream-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.json 的 env 键配置:
| 变量 | 说明 |
|---|---|
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=1 | claude --remote 强制打包上传本地仓库 |
其他可通过 settings.json 的 env 键配置的变量(如 MAX_THINKING_TOKENS、CLAUDE_CODE_EFFORT_LEVEL、CLAUDE_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,主会话不受影响。