On this page
Create, inspect, delete, rename, and repair Claude Code profiles and their stored tokens; includes force-delete options and API token validation.
#c profile
create, inspect, rename, delete, and manage Claude Code profiles and their stored tokens
#profile create
run the create-profile wizard in one continuous alt-screen session: prompt for the profile name, config directory and launch options, write the profile directory together with its symlinks into the shared store, then drive an interactive Claude Code OAuth login so the profile is authenticated before you leave. Requires a real terminal, and prints the summary and auth outcome afterwards
Effect: mutating
#Grants
| Kind | Name | Reason |
|---|---|---|
| proc_mutate | auth-login | the wizard drives an interactive Claude Code OAuth login for the new profile |
#profile delete
remove a registered profile for good: unlink its shared-store symlinks, delete the real entries in its directory, drop its tokens.json entry and its options.json registration, and clear any last_config reference in state.json. Refuses a profile holding a live interactive Claude Code session unless --force-delete (background jobs and daemons do not block it), and takes conversation history only with --force-delete-data
Effect: mutating ยท consequential (prompts before running; --approve-consequential skips)
#Flags
| Name | Short | Type | Default | Env | Description |
|---|---|---|---|---|---|
--force-delete | bool | force deletion even if sessions appear active; skips the safety check | |||
--force-delete-data | bool | delete even when shared-dir names hold REAL data instead of symlinks; this DESTROYS that data (e.g. conversation history) |
#Arguments
| Name | Required | Description |
|---|---|---|
name | yes | name of the profile to delete (e.g. work, personal, research) |
#Grants
| Kind | Name | Reason |
|---|---|---|
| file_write | irreversible-delete | removes a profile directory, its stored OAuth token and its session data for good |
#profile show
print a detailed report for one profile: whether its directory exists on disk, whether it is registered or pinned in options.json, the state of its stored token, its resolved configuration and the session data it holds. Inspects default (~/.claude) like any other profile, and exits non-zero when the name matches no directory, registration or token
Effect: read_only
#Arguments
| Name | Required | Description |
|---|---|---|
name | yes | name of the profile to inspect (e.g. work, personal, default) |
#profile rename
move a profile to a new name, taking its directory, its tokens.json entry, its options.json registration and its session data with it. Validates that the old name exists, that the new one is free in both the directory tree and the options file, and that it fits the lowercase-letters-digits-hyphens charset. Refuses a profile holding a live interactive Claude Code session, and the reserved name default
Effect: mutating
#Arguments
| Name | Required | Description |
|---|---|---|
old | yes | current name of the profile to rename (must be an existing, non-running profile) |
new | yes | new name for the profile (lowercase letters, digits, and hyphens; must be unused) |
#profile fix-auth
repair one profile's authentication in whichever of two shapes applies. When the profile directory exists, strip the session credentials that shadow a stored long-lived token so the token is used again. When the directory is gone but tokens.json still lists the profile, remove that stale entry. Says so plainly when there is nothing to repair
Effect: mutating
#Arguments
| Name | Required | Description |
|---|---|---|
name | yes | name of the profile to repair: an existing profile's shadowing session credentials are removed; a missing profile's stale token entry is removed |
#profile check-tokens
read every discovered profile's stored OAuth token from tokens.json and validate each one against the Anthropic API, then print a table of profile name, status and a truncated token preview. The status distinguishes a valid token from an invalid one, an unreachable API and an indeterminate answer, and profiles holding no token are listed too
Effect: read_only