Version Control for Global Config (~/.claude/)
Your ~/.claude/ directory contains global configuration (settings, MCP servers, session history) that should be backed up but contains secrets.
Recommended approach (inspired by Martin Ratinaud, 504 sessions):
bash
# 1. Create Git repo for global config
mkdir ~/claude-config-backup
cd ~/claude-config-backup
git init
# 2. Symlink directories (not files with secrets)
ln -s ~/.claude/agents ./agents
ln -s ~/.claude/commands ./commands
ln -s ~/.claude/hooks ./hooks
ln -s ~/.claude/skills ./skills
# 3. Copy settings template (without secrets)
cp ~/.claude/settings.json ./settings.template.json
# Manually replace secrets with ${VAR_NAME} placeholders
# 4. .gitignore for secrets
cat > .gitignore << EOF
# Never commit these
.env
settings.json # Contains resolved secrets
mcp.json # Contains API keys
*.local.json
# Session history (large, personal)
projects/
EOF
# 5. Commit and push to private repo
git add .
git commit -m "Initial Claude Code global config backup"
git remote add origin git@github.com:yourusername/claude-config-private.git
git push -u origin mainWhy symlinks?
- Changes in
~/.claude/agents/immediately reflected in Git repo - No manual sync needed
- Works across macOS/Linux (Windows: use junction points)