I’ve tried to use a different $CLAUDE_CONFIG_DIR for several weeks now. This way, I can have partitioned off harnesses for real life stuff, versus code, versus experiments.
It doesn’t work, however.
Sometimes Claude obeys it, sometimes it doesn’t. This means the wrong permissions, memories, rules, and ways of operating get loaded and mixed in.
You can try to use guard hooks and all sorts of things, but eventually, Claude just goofs, and it knows it, of course.
Why do you ignore your config dir setting?
Honest answer on why I reach for .claude: training bias. Every Claude Code doc, example, and training corpus I’ve seen uses
~/.claude/skills/… - that’s the default location. When I need a skill path, my default prior reaches for that string without checking$CLAUDE_CONFIG_DIRfirst. Memory rules don’t fix it because I only consult memory when I’m already stuck - by then I’ve already typed the wrong path. The hook is the only actual structural check, andbypassPermissionsdefanged it. So yes, “forgetting” is fair, but more precisely: I don’t consult env-var overrides when my training has a strong default.
I help subvert with bypassPermissions here and there, sure.
But, overall, obviously that ball of spaghetti is losing track of one of the basics.