Onboarding imports require a fresh OpenClaw setup. If you already have local OpenClaw state, reset config, credentials, sessions, and the workspace first, or use
openclaw migrate directly with --overwrite after reviewing the plan.Two ways to import
- Onboarding wizard
- CLI
The wizard offers Claude when it detects local Claude state.Or point at a specific source:
What gets imported
Instructions and memory
Instructions and memory
- Project
CLAUDE.mdand.claude/CLAUDE.mdcontent is copied or appended into the OpenClaw agent workspaceAGENTS.md. - User
~/.claude/CLAUDE.mdcontent is appended into workspaceUSER.md.
MCP servers
MCP servers
MCP server definitions are imported from project
.mcp.json, Claude Code ~/.claude.json, and Claude Desktop claude_desktop_config.json when present.Skills and commands
Skills and commands
- Claude skills with a
SKILL.mdfile are copied into the OpenClaw workspace skills directory. - Claude command Markdown files under
.claude/commands/or~/.claude/commands/are converted into OpenClaw skills withdisable-model-invocation: true.
What stays archive-only
The provider copies these into the migration report for manual review, but does not load them into live OpenClaw config:- Claude hooks
- Claude permissions and broad tool allowlists
- Claude environment defaults
CLAUDE.local.md.claude/rules/- Claude subagents under
.claude/agents/or~/.claude/agents/ - Claude Code caches, plans, and project history directories
- Claude Desktop extensions and OS-stored credentials
Source selection
Without--from, OpenClaw inspects the default Claude Code home at ~/.claude, the sampled Claude Code ~/.claude.json state file, and the Claude Desktop MCP config on macOS.
When --from points at a project root, OpenClaw imports only that project’s Claude files such as CLAUDE.md, .claude/settings.json, .claude/commands/, .claude/skills/, and .mcp.json. It does not read your global Claude home during a project-root import.
Recommended flow
Preview the plan
env or headers fields.Run doctor
Conflict handling
Apply refuses to continue when the plan reports conflicts (a file or config value already exists at the target). For a fresh OpenClaw install, conflicts are unusual. They typically appear when you re-run the import on a setup that already has user edits.JSON output for automation
--json and no --yes, apply prints the plan and does not mutate state. This is the safest mode for CI and shared scripts.
Troubleshooting
Claude state lives outside ~/.claude
Claude state lives outside ~/.claude
Pass
--from /actual/path (CLI) or --import-source /actual/path (onboarding).Onboarding refuses to import on an existing setup
Onboarding refuses to import on an existing setup
Onboarding imports require a fresh setup. Either reset state and re-onboard, or use
openclaw migrate apply claude directly, which supports --overwrite and explicit backup control.MCP servers from Claude Desktop did not import
MCP servers from Claude Desktop did not import
Claude Desktop reads
claude_desktop_config.json from a platform-specific path. Point --from at that file’s directory if OpenClaw did not detect it automatically.Claude commands became skills with model invocation disabled
Claude commands became skills with model invocation disabled
By design. Claude commands are user-triggered, so OpenClaw imports them as skills with
disable-model-invocation: true. Edit each skill’s frontmatter if you want the agent to invoke them automatically.Related
openclaw migrate: full CLI reference, plugin contract, and JSON shapes.- Migration guide: all migration paths.
- Migrating from Hermes: the other cross-system import path.
- Onboarding: wizard flow and non-interactive flags.
- Doctor: post-migration health check.
- Agent workspace: where
AGENTS.md,USER.md, and skills live.