Context
This issue extends #564 to explore migrating from claude config CLI commands to the new official settings.json format for Claude Code configuration.
Current Approach
- Using
claude config set --global commands applied during setup
- Settings stored in
.claude/settings/claude-code-defaults.json
- Applied via
utils/configure-claude-code-settings.sh
Proposed Migration
According to Claude Code documentation, settings.json is now the official mechanism for configuration with these benefits:
- Hierarchical settings (user, project, enterprise)
- Better support for permissions and environment variables
- Direct file-based configuration without CLI commands
- Native support for team/enterprise settings
New Configuration Structure
~/.claude/settings.json # User settings (global)
.claude/settings.json # Project settings (shared)
.claude/settings.local.json # Project settings (local, gitignored)
Expanded Settings to Include
Beyond the basic settings from #564, we should also configure:
Environment Variables
{
"env": {
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192",
"BASH_DEFAULT_TIMEOUT_MS": "120000",
"BASH_MAX_TIMEOUT_MS": "600000",
"DISABLE_COST_WARNINGS": "1",
"MCP_TIMEOUT": "30000",
"MCP_TOOL_TIMEOUT": "60000",
"MAX_MCP_OUTPUT_TOKENS": "25000"
}
}
Additional Settings
{
"apiKeyHelper": "/path/to/script/if/needed",
"cleanupPeriodDays": 30,
"includeCoAuthoredBy": true,
"permissions": {
"defaultMode": "allowEdits",
"additionalDirectories": [],
"allow": [],
"deny": []
}
}
Benefits of Migration
- Official Support: Align with Claude Code's recommended approach
- Better Organization: Separate user vs project settings
- Environment Management: Centralize env var configuration
- Team Consistency: Easier to share settings across team
- Future-Proof: Avoid deprecated
claude config commands
Implementation Tasks
Backwards Compatibility
- Keep
configure-claude-code-settings.sh for older Claude Code versions
- Detect Claude Code version and use appropriate method
- Document minimum Claude Code version for settings.json support
Related to: #564
Principle: systems-stewardship
Context
This issue extends #564 to explore migrating from
claude configCLI commands to the new officialsettings.jsonformat for Claude Code configuration.Current Approach
claude config set --globalcommands applied during setup.claude/settings/claude-code-defaults.jsonutils/configure-claude-code-settings.shProposed Migration
According to Claude Code documentation,
settings.jsonis now the official mechanism for configuration with these benefits:New Configuration Structure
Expanded Settings to Include
Beyond the basic settings from #564, we should also configure:
Environment Variables
{ "env": { "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192", "BASH_DEFAULT_TIMEOUT_MS": "120000", "BASH_MAX_TIMEOUT_MS": "600000", "DISABLE_COST_WARNINGS": "1", "MCP_TIMEOUT": "30000", "MCP_TOOL_TIMEOUT": "60000", "MAX_MCP_OUTPUT_TOKENS": "25000" } }Additional Settings
{ "apiKeyHelper": "/path/to/script/if/needed", "cleanupPeriodDays": 30, "includeCoAuthoredBy": true, "permissions": { "defaultMode": "allowEdits", "additionalDirectories": [], "allow": [], "deny": [] } }Benefits of Migration
claude configcommandsImplementation Tasks
~/.claude/settings.jsonwith user-level defaultsBackwards Compatibility
configure-claude-code-settings.shfor older Claude Code versionsRelated to: #564
Principle: systems-stewardship