命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
指定设置JSON文件或内联JSON字符串
--settings <path-or-json>claude --settings ./settings.json--settings 是 Claude Code CLI 的启动 flag,用于为当次会话临时加载一份设置(settings),覆盖已保存的配置。
根据官方 CLI 参考文档(code.claude.com/docs/en/cli-reference),--settings 接受的值可以是:
官方 headless 文档(code.claude.com/docs/en/headless)在描述 --bare 模式下如何补齐各类配置时,把它列为:
| 要加载什么 | 用什么 flag |
|---|---|
| Settings | --settings <file-or-json> |
同一篇文档还给出一个具体用法场景:在 --bare 模式下(该模式不读取用户目录下的登录凭据),如果要用 Anthropic API 而不是订阅登录,可以"通过 --settings 的 JSON 里提供 apiKeyHelper"来提供密钥获取方式。
claude --settings ./settings.json
也可以直接传内联 JSON:
claude --settings '{"model":"claude-haiku-4-5-20251001"}'
官方文档未提及与之对应的环境变量或 settings.json 字段——--settings 本身就是"命令行级别的一次性覆盖机制"。如果想让同样的配置长期生效,需要把内容写入 ~/.claude/settings.json(用户级)或 .claude/settings.json(项目级)等真实的设置文件。
在 --bare 模式下(跳过 hooks、skills、自定义命令、已安装插件、MCP servers、auto memory 和 CLAUDE.md 的自动发现),官方文档把 --settings 列为在该模式下补充配置的正规途径之一,与它并列的还有:
| 要加载什么 | 用什么 flag |
|---|---|
| 系统提示词补充 | --append-system-prompt、--append-system-prompt-file |
| Settings | --settings <file-or-json> |
| MCP servers | --mcp-config <file-or-json> |
| 自定义 agent | --agents <json> |
| 插件 | --plugin-dir <path>、--plugin-url <url> |
可以看到 --mcp-config 采用了和 --settings 相同的"文件路径或内联 JSON"设计,分别管理设置和 MCP server 配置。
--settings 本质上就是把一份设置内容临时插入到设置的优先级链条里,而不是某个具体 key 的等价写法。官方文档(code.claude.com/docs/en/settings)给出的优先级图示中,把 claude --settings 明确列为独立的一层:
| 优先级(从高到低) | 层级 | 来源 | 归属 |
|---|---|---|---|
| 1 | Managed settings | managed-settings.json、MDM 或 claude.ai 控制台 | 组织 |
| 2 | Command line | claude --settings | 你,仅当次会话 |
| 3 | Project local | .claude/settings.local.json | 你,仅当前项目 |
| 4 | Shared project | .claude/settings.json | 项目所有人 |
| 5 | User | ~/.claude/settings.json | 你,所有项目 |
也就是说,--settings 会覆盖项目和用户级别的持久化配置,但不会覆盖组织下发的 managed settings。
官方 settings-reference 文档中还给出一个具体例子:对于 remote.defaultEnvironmentId 这个 key,一个自托管的 ccpool_ ID"只能从 user 和 managed settings 以及 --settings 读取"——即某些 key 明确把项目级文件排除在外,只认用户级、管理员级和命令行这三条路径。
| 约束 | 原因 |
|---|---|
| 只在当次进程/会话中生效 | 设计上是一次性的会话级覆盖,不是持久化配置手段 |
| 优先级低于 managed settings(组织下发的策略) | 保证企业管理员的强制策略不会被终端用户用一个临时 flag 绕过 |
--settings 传一段内联 JSON,对当次运行做临时覆盖,而不用改动仓库里提交的 .claude/settings.json。--bare 模式下补齐配置:--bare 会跳过对用户目录和项目目录里 hooks/CLAUDE.md 等内容的自动发现,此时用 --settings 显式传入所需配置(例如 apiKeyHelper)是官方文档给出的标准做法。--settings 优先级最高:实际上它排在 managed settings 之下——组织管理员通过 managed-settings.json / MDM / claude.ai 控制台下发的策略,始终会覆盖你在命令行传入的 --settings 内容。--settings 只对当次会话生效,退出后不会保留,下次不带这个 flag 启动就恢复原状。