Feature request: Claude Code profiles with isolated memory, commands, hooks, and settings
Problem
The Claude Code ecosystem has grown at breakneck speed. There are now dozens of batteries-included frameworks that enhance Claude with powerful context and subagent libraries, e.g.
- https://github.com/SuperClaude-Org/SuperClaude_Framework
- https://github.com/wshobson/commands and https://github.com/wshobson/agents
- https://github.com/wcygan/dotfiles
- https://github.com/carlrannaberg/claudekit
And many others listed here: https://github.com/hesreallyhim/awesome-claude-code
[!NOTE] These frameworks are incompatible with each other, but users may want to use all of them - different frameworks for different projects.
Solution
Introduce a new profiling feature into Claude Code that lets users configure a specific profile.
A new profiles directory would be added to .claude.
.claude
└── profiles
├── claudekit
│ ├── settings.json
│ ├── commands/
│ ├── context/
│ └── hooks/
└── superclaude
├── settings.json
├── agents/
└── commands/
Then, users would do something like this:
Profile Management Commands
# Set active profile - only commands and hooks from this profile are loaded in Claude Code
claude profile use <profile-name>
# List available profiles
claude profile list
# Create new profile
claude profile create <profile-name>
# Show current profile
claude profile current
# Delete profile
claude profile delete <profile-name>
Profile Structure
Each profile would contain:
CLAUDE.md- Profile-specific CLAUDE.md filesettings.json- Profile-specific configuration overridesagents/- Custom agents for this profilecommands/- Custom slash commandshooks/- Profile-specific hook configurations
All of these profile features will completely override the global features in the root .claude directory, except for
the settings.json file.
Settings Hierarchy
Profiles would inherit from global settings but override specific configurations, following Claude Code's existing
settings hierarchy:
- Command line arguments (highest precedence)
- Active profile settings ← New layer
- Project-local settings (
.claude/settings.local.json) - Shared project settings (
.claude/settings.json) - User settings (
~/.claude/settings.json) (lowest precedence)
This allows users to seamlessly switch between framework configurations while maintaining project-specific overrides.
29 Comments
Found 2 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
I think this, in combination with https://github.com/anthropics/claude-code/issues/6915, will be important to properly scope different tasks while maintaining maximum context availability.
This will helps us have more than different marketplaces for different projects(using different profiles)
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
bump, still important feature
Codex CLI's profiles is exactly what I had in mind with the feature described in the OP:
<img width="969" height="727" alt="Image" src="https://github.com/user-attachments/assets/ba06d61b-32ef-4c45-b2e8-ffb889b853a1" />
This would be really useful. I'm finding model changes in one instance are affecting other running instances.
I highly desire this feature because it helps me to create profiles for different tasks at my work instead of removing / adding tools, subagents to maximize context window .
+1
+1
Would love this feature!!! 'documentation' profile, 'deployment' profile, all in one project but all which load there own skills/mcp/etc. would greatly help cutdown on context bloat
im literally working on an ugly hack version of this for my local workflows. Basically trying to generate/manage custom settings files, and just specify them via --settings until this or something similar is implemented.
this would be extremely useful. in particular, i'd love to be able to define custom groups of permissions that can be easily used anywhere, rather than having to apply them to each directory individually.
It would also help to tighten security by rolling out profiles centrally.
+1
+1
+1
+4
This would be great for people who need a higher separation of concerns
I would welcome this feature. I work with multiple partners, and I often encounter conflicts between MCP servers, such as unnecessary memory sharing. I would appreciate the ability to run a Cloud profile or instance with completely isolated settings and memory.
Guys, I vibed this tool to help me for my work. Maybe this tool can help you too. All source code are available, well tested, well documented. You can even fork it if you need. I would be grateful for your feedback ☺️
Would love to have this feature
I built a version which addresses most wishes in this thread.
Install & use:
Or use slash commands directly inside Claude Code:
What it does:
Each profile gets its own
settings.json,mcp.json,CLAUDE.md,commands/, andhooks/. Switching atomically swaps them inside~/.claude-- no symlinks, noCLAUDE_CONFIG_DIR. Crash-safe via intent file + lockfile.Addresses the use cases in this thread:
.claude-profilefiles (like.nvmrc)@yarikleto your tool swaps the entire
~/.claudedirectory (including auth, sessions, memory, history). I decided to selectively swap only config files. Auth credentials, project memory, and sessions stay shared across profiles.Scope: This manages global
~/.claudeconfig. Project-level.claude/directories (used by frameworks like [Ruflo](https://github.com/ruvnet/ruflo), SuperClaude, ClaudeKit) are unaffected -- Claude Code merges both layers, so they coexist.A Notification start hook can load profile-specific settings:
Profiles:
~/.claude/profiles/work.sh,~/.claude/profiles/personal.sh, etc.@julianleopold Can I use multiple profiles at the same time?
@vaclavpavek No, only one profile can be active at a time.
Profiles work by swapping files inside
~/.claude/(settings.json, mcp.json, hooks, commands, CLAUDE.md). Since Claude Code reads from that single directory, switching a profile affects every terminal/session on the machine.+1
I built a small CLI tool for a subset of the featurse here that interested me: saving named profiles of MCPs and plugins to use per working context (Jira + Docs for` planning, LSP + GitHub for coding, etc.), without touching your base settings.
It is a simple wrapper around calling
claudebut passing only the specific set of tooling you want on that session (plugins and MCPs). This is done on the fly by creating a temp file of your settings.json with the profile overrides on top, so it is fully scoped to that session will never touch your.claudefolder and configs.Parallel sessions with different profiles are supported and the main use case I had in mind @vaclavpavek
If anyone wants to try it out while there is no native profiles support: https://github.com/Naraujo13/claude-code-profiles
it feels extremely dumb to not support this natively at all, we have tools like cc switch that can switch providers in a gui style, but claude.md still leaks to other agents in the same machine,