Skip to main content
You’ve spent time customizing Claude Code — CLAUDE.md, custom skills, hooks, plugins, MCP servers. When you create a new cac environment, you don’t want to set all that up again. --clone lets you inherit your existing config into a new isolated environment, while keeping device identity and telemetry protection fully separate.

Quick start

That’s it. Your new work environment now has all your customizations, with its own isolated identity.

What gets inherited

What’s not inherited (always generated fresh per environment):
  • Device identity (UUID, hostname, MAC address, machine ID)
  • Credentials and sessions
  • Telemetry protection settings
  • mTLS certificates
Shared resources are symlinked to the source. When you edit a skill or hook in ~/.claude/, every cloned environment sees the change immediately. Best for: keeping all environments in sync with one set of customizations.
Resources are copied into the new environment. Changes to the source don’t affect it, and vice versa. Best for: creating an environment you want to customize independently.
With --no-link, cac automatically appends its own instructions to the copied CLAUDE.md (the “CAC Meta Prompt”). With symlink mode this is skipped, since modifying a symlinked file would affect the source.

Clone from another environment

You can clone from any existing cac environment instead of ~/.claude/:
This is useful when you’ve customized one cac environment and want to branch off from it.

Settings merge

Settings use a layered merge system regardless of symlink/copy mode:
  1. Base: settings.json from the source (host ~/.claude/ or another env)
  2. Override: settings.override.json in the environment (cac-specific overrides)
  3. Result: Merged settings.json written to the environment’s .claude/ directory
The merge happens on each claude startup, so if you update your base settings, all cloned environments pick up the changes automatically.

Typical workflow

Combining with other flags

All create flags work together: