Claude Code 配置目录加载方式分析

文档目的

本文档记录当前仓库内对 Claude Code 配置目录加载方式的分析结论,重点回答两个问题:

  1. 是否支持通过环境变量自定义配置目录
  2. 是否支持通过命令行参数直接指定配置目录

结论先说

当前结论是:

  • 支持通过环境变量 CLAUDE_CONFIG_DIR 自定义配置目录
  • 不支持通过命令行参数直接指定配置目录(例如 --config-dir

也就是说,如果要切换 Claude Code 的配置加载目录,当前标准做法是设置环境变量,而不是传 CLI 参数。

代码依据

核心实现位于:

  • cc-scode/cluade-code/src/utils/envUtils.ts

其中用于获取 Claude 配置目录的逻辑是:

process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), '.claude')

这说明:

  • 如果设置了 CLAUDE_CONFIG_DIR,就优先使用这个目录
  • 如果没有设置,则回退到默认目录 ~/.claude

从实现方式看,这不是外围脚本约定,而是代码内部直接支持的行为。

命令行参数情况

在当前仓库的 CLI 参数定义中,没有发现类似下面这种参数:

  • --config-dir
  • --claude-config-dir
  • --config-home

目前能看到的相关能力更接近:

  • --settings:传入 settings 文件路径或 JSON 内容

但它的作用是补充 settings,而不是切换整个配置根目录,因此不能替代 CLAUDE_CONFIG_DIR

推荐使用方式

Linux / macOS

CLAUDE_CONFIG_DIR=/path/to/custom-config claude

PowerShell

$env:CLAUDE_CONFIG_DIR="C:\path\to\custom-config"
claude

Windows cmd

set CLAUDE_CONFIG_DIR=C:\path\to\custom-config
claude

适用理解

这个能力适合以下场景:

  • 为不同项目隔离 Claude Code 配置目录
  • 测试不同 settings / memory / session 文件集合
  • 在临时环境中启动独立配置,不污染默认 ~/.claude

如果只是想给某次运行额外传一份 settings,则仍应优先考虑 --settings;如果目标是切换“整个配置加载根目录”,则应使用 CLAUDE_CONFIG_DIR

最终判断

对于“Claude Code 是否支持自己配置配置环境加载目录”这个问题,结论是:

  • 支持环境变量方式CLAUDE_CONFIG_DIR
  • 不支持直接命令参数方式:当前未发现对应 CLI 参数

因此,现阶段最直接、最标准的做法,就是通过环境变量来指定配置目录。