[FEATURE] Separate machine-managed state from user-editable config in ~/.claude.json

Resolved 💬 3 comments Opened Mar 31, 2026 by rvanmelle Closed Apr 4, 2026

~/.claude.json mixes user-editable configuration (MCP servers, preferences) with machine-managed internal state (cached feature flags, auth tokens). This makes it difficult to manually edit MCP server settings because you have to navigate around large blobs of auto-generated data like cachedGrowthBookFeatures with dozens of obfuscated tengu_* flags.

Current state:

{
  "mcpServers": { ... },
  "cachedGrowthBookFeatures": {
    "tengu_claudeai_mcp_connectors": true,
    "tengu_pewter_ledger": "OFF",
    "tengu_keybinding_customization_release": true,
    "tengu_marble_whisper": true,
    "tengu_quartz_lantern": true,
    // ... 15+ more obfuscated feature flags
  },
  // auth tokens, other internal state...
}

Proposal: Move machine-managed state (feature flags, cached tokens, internal bookkeeping) to a separate file (e.g., ~/.claude/state.json or ~/.claude/cache.json) so that ~/.claude.json only contains user-editable configuration. This would make it much easier to hand-edit MCP server configs without accidentally touching internal state, and reduces the risk of merge conflicts when Claude Code updates its cached flags.

Alternatively, support MCP server configuration in ~/.claude/settings.json (related: #32145) so users never need to touch ~/.claude.json at all.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗