Migrate memory blocks from an existing agent to the current agent. Use when the user wants to copy or share memory from another agent, or during /init when setting up a new agent that should inherit memory from an existing one.
This skill helps migrate memory blocks from an existing agent to a new agent, similar to macOS Migration Assistant for AI agents.
Requires Memory Filesystem (memfs)
This workflow is memfs-first. If memfs is enabled, do not use the legacy block commands — they can conflict with file-based edits.
To check: Look for a
memory_filesystemblock in your system prompt. If it shows a tree structure starting with/memory/including asystem/directory, memfs is enabled.To enable: Ask the user to run
/memfs enable, then reload the CLI.
This is the recommended flow:
Export the source agent's memfs to a temp directory
check memfs export --agent <source-agent-id> --out /tmp/check-memfs-<source-agent-id>
Copy the files you want into your own memfs
system/ = attached blocks (always loaded)Example:
cp -r /tmp/check-memfs-agent-abc123/system/project ~/.check/agents/$CHECK_AGENT_ID/memory/system/
cp /tmp/check-memfs-agent-abc123/notes.md ~/.check/agents/$CHECK_AGENT_ID/memory/
Sync to API
check memfs sync --agent $CHECK_AGENT_ID
This gives you full control over what you bring across and keeps everything consistent with memfs.
If memfs is not enabled, you can use block-level commands:
check blocks listcheck blocks copycheck blocks attach⚠️ Do not use these if memfs is enabled — they can diverge from file-based edits.
You cannot have two blocks with the same label. If you try to copy/attach a block and you already have one with that label, you'll get a duplicate key value violates unique constraint error.
Solutions:
Use --label (copy only): Rename the block when copying:
check blocks copy --block-id <id> --label project-imported
Use --override (copy or attach): Automatically detach your existing block first:
check blocks copy --block-id <id> --override
check blocks attach --block-id <id> --override
If the operation fails, the original block is automatically reattached.
Manual detach first: Use the memory tool to detach your existing block:
memory(agent_state, "delete", path="/memories/<label>")
Then run the copy/attach script.
Note: check blocks attach does NOT support --label because attached blocks keep their original label (they're shared, not copied).
Ask the user for the source agent's ID (e.g., agent-abc123).
If they don't know the ID, invoke the finding-agents skill to search:
Skill({ skill: "finding-agents" })
Example: "What's the ID of the agent you want to migrate memory from?"
Scenario: You're a new agent and want to inherit memory from an existing agent "ProjectX-v1".
Get source agent ID from user:
User provides: agent-abc123
Export their memfs:
check memfs export --agent agent-abc123 --out /tmp/check-memfs-agent-abc123
Copy the relevant files into your memfs:
cp -r /tmp/check-memfs-agent-abc123/system/project ~/.check/agents/$CHECK_AGENT_ID/memory/system/
Sync:
check memfs sync --agent $CHECK_AGENT_ID