Configuration File Refactoring: Separate Data Concerns
Bug Description
Thank You & Appreciation
First, I want to express my sincere gratitude for Claude Code. As a Claude Max subscriber, it
has truly transformed my development workflow and made coding an incredibly enjoyable
experience. The AI integration and productivity gains are outstanding.
Current Observation
While using Claude Code extensively, I've noticed that the .claude.json file grows significantly
over time. Currently, it combines:
- Configuration settings (MCP servers, preferences)
- Usage history and statistics
- Tips history and UI state
- Project-specific data
The file can become quite large with all this mixed data.
What if we could separate these?
It would be great if different types of data could be organized separately, something like:
~/.claude/
├── config.json # Core settings only (MCP, preferences)
├── history/
│ ├── usage-stats.json # Usage statistics
│ ├── tips.json # Tips history
│ └── projects.json # Project-specific data
└── cache/ # Temporary data
Benefits
- Cleaner Configuration: Users could easily backup/restore just settings
- Better Performance: Smaller config file would load faster
- Easier Management: Separate concerns would be simpler to handle
- Predictable Growth: Configuration would stay small and stable
This doesn't affect current functionality, but it would be a nice enhancement for future
releases.
Thank you again for the amazing tool! Looking forward to continued development.
Best regards,
A Happy Claude Code User
Environment Info
- Platform: darwin
- Terminal: vscode
- Version: 1.0.67
- Feedback ID:
Errors
[{"error":"Error: Command failed: security find-generic-password -a $USER -w -s \"Claude Code\"\nsecurity: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.\n\n at genericNodeError (node:internal/errors:983:15)\n at wrappedFn (node:internal/errors:537:14)\n at checkExecSyncError (node:child_process:892:11)\n at execSync (node:child_process:964:15)\n at t7 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:867:5214)\n at file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:48453\n at Q (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:674:14418)\n at lJ (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:45891)\n at yz (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:44758)\n at W9 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:776:51079)","timestamp":"2025-08-03T05:18:19.417Z"},{"error":"Error: Request was aborted.\n at l71._createMessage (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:1327:7955)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)","timestamp":"2025-08-03T05:30:56.268Z"},{"error":"Error: EISDIR: illegal operation on a directory, read\n at Module.readFileSync (node:fs:433:20)\n at Object.readFileSync (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:680:7518)\n at SYA (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:750:7232)\n at Object.call (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:1508:6310)\n at call.next (<anonymous>)\n at XK8 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2546:10157)\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async xf1 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2546:6576)\n at async PNB (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:1867:1384)\n at async JK8 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2546:5720)","timestamp":"2025-08-03T05:31:16.072Z"},{"error":"Error: Language not supported while highlighting code, falling back to markdown: ipynb\n at file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:1474:421\n at Object.useMemo (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:65:26368)\n at $$9.useMemo (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:46:15588)\n at lV (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:1474:313)\n at KR (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:65:19859)\n at Mb (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:42848)\n at Nb (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:67:38369)\n at Bj (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cl
Note: Error logs were truncated.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗