Wiki · Features in depth

Import from other agents

Moving over is not copying a folder — it is deciding what to keep. What comes over, what does not and how to check it.

✅ Verified 17. 10. 2026Source: official documentation →📋 Copy for your AI
🔁
Moving over is not copying a folder — it is deciding what to keep. Hermes takes what makes sense from Claude Code, Codex CLI and OpenClaw (rules, memory, skills, MCP servers) and deliberately leaves credentials behind. It always shows you the plan first and only then asks whether to apply it.

From Claude Code and Codex CLI

hermes import-agent # auto-detects ~/.claude or ~/.codex hermes import-agent claude-code # Claude Code only hermes import-agent codex # Codex CLI only hermes import-agent claude-code --dry-run # preview only, writes nothing hermes import-agent codex --source /path/.codex # custom location hermes import-agent claude-code --overwrite --yes # replace conflicts, no prompts

What gets imported

In Claude CodeIn Hermes
CLAUDE.md (global instructions)Entries in ~/.hermes/memories/MEMORY.md
permissions.allow (Bash(...))command_allowlist in config.yaml
permissions.denyapprovals.deny in config.yaml
mcpServersmcp_servers in config.yaml
skills/<name>/ (with SKILL.md)~/.hermes/skills/claude-code-imports/<name>/
commands/*.md (slash commands)Not imported — listed for manual conversion into skills
In Codex CLIIn Hermes
AGENTS.md (global instructions)Entries in MEMORY.md
config.toml → [mcp_servers.*]mcp_servers
memories/*.mdEntries in MEMORY.md
skills/<name>/~/.hermes/skills/codex-imports/<name>/

Rules such as Bash(npm run test:*) become globs (npm run test*). Rules for Claude-specific tools (e.g. Read(...)) are reported as unmapped — there is nothing to map them onto.

What is never imported

ItemWhy
Credential files (~/.claude/.credentials.json, ~/.codex/auth.json)The import never reads them
Secret-looking values in MCP serversVariables such as *_TOKEN, *_API_KEY and Authorization headers are stripped and listed so you can re-add them deliberately

Sign in to providers with hermes setup and add keys to ~/.hermes/.env. It is a chore, but it is the only way an import cannot dump your keys somewhere they do not belong.

How it behaves

PropertyMeaning
Preview firstThe command always prints a per-item plan; in non-interactive sessions it stops at the preview unless you pass --yes
Merges, not replacesMemory entries are deduplicated against yours; allow/deny patterns merge with the existing config
Conflicts are skippedAn MCP server or skill that already exists is reported as a conflict and left alone (only --overwrite replaces)

From OpenClaw

hermes claw migrate # preview, then confirm hermes claw migrate --dry-run # preview only hermes claw migrate --preset full --migrate-secrets --yes # with keys, no prompts
ItemDestination
Persona (workspace/SOUL.md)~/.hermes/SOUL.md
Workspace instructions (AGENTS.md)AGENTS.md at --workspace-target
Long-term memory and profilememories/MEMORY.md and USER.md (merged, deduplicated)
Daily notesMerged into main memory
Skills, MCP servers, model settingsMatching parts of config.yaml and skills/
OptionPurpose
--preset full / user-dataEverything, or user data without infrastructure config
--migrate-secretsInclude API keys. Even full does not take them by default — it must be explicit
--skill-conflict skip|overwrite|renameWhat to do with a skill of the same name (skip by default)
--no-backupSkip the ~/.hermes/ snapshot that is otherwise taken before writing (~/.hermes/backups/pre-migration-*.zip)

That pre-migration backup is your safety net and restores with hermes import. Do not disable it until you are sure the migration worked.

Things to watch

SituationWhat to do
The agent does not “know” your rules after the importInstructions from another tool landed in memory, not in the project's AGENTS.md — project rules belong in the project file
The agent can do more than you wantA Claude Code allowlist can be broad; review command_allowlist and trim it
An MCP server did not connectIt was a conflict, or it is missing the secret the import deliberately stripped
Scheduled jobs are missingCron does not migrate — recreate scheduled jobs in Hermes
The two setups drifted apart a month laterThe import is one-shot. Either run it again, or (better) stop using two agents for the same thing

Recommended procedure

1) hermes import-agent --dry-run # what would be taken 2) review the plan and disable what you do not want 3) hermes import-agent # apply 4) hermes setup # sign in to providers 5) add keys to ~/.hermes/.env 6) run a real task and compare with the old agent

Where next

← Back to the wiki