{
  "schemaVersion": 1,
  "updatedAt": "2026-10-15",
  "dimensions": [
    "configuration",
    "plugins",
    "skills",
    "instructions",
    "mcpServers",
    "subagents",
    "hooks",
    "commands",
    "memory",
    "sessions"
  ],
  "contracts": [
    {
      "harness": "claude-code",
      "variant": "current",
      "default": true,
      "verifiedAt": "2026-10-15",
      "evidence": ["claude-commands-docs-6a6e10"],
      "references": ["https://code.claude.com/docs/en/commands#all-commands"],
      "conditions": ["Documentation and source review; no live session probe."],
      "unknowns": ["No live session was run."],
      "details": {},
      "support": {
        "configuration": "partial",
        "plugins": "unsupported",
        "skills": "native",
        "instructions": "native",
        "mcpServers": "native",
        "subagents": "native",
        "hooks": "unsupported",
        "commands": "native",
        "memory": "unsupported",
        "sessions": "unsupported"
      },
      "answers": {
        "importFrom": {
          "status": "supported",
          "answer": "`/import [codex|gemini|cursor]` (or `claude import <source>` from the shell) brings OpenAI Codex, Google Gemini CLI or Cursor setup into Claude Code: instruction files such as `AGENTS.md` are appended once to the matching `CLAUDE.md`, and MCP servers, commands, subagents, skills and the permission mode come across. `--dry-run` previews and `--yes` skips the picker. Separately, `claude mcp add-from-claude-desktop` copies MCP servers from the Claude Desktop app.",
          "reference": "https://code.claude.com/docs/en/commands#all-commands",
          "evidence": [
            "claude-commands-docs",
            "claude-cli-reference-docs",
            "claude-memory-docs",
            "memory-claude-code-code-claude-com-docs-en-errors",
            "claude-mcp-docs"
          ],
          "notes": [
            "Needs v2.1.213 or later (v2.1.265 for Cursor) and is turned on by a fetched feature flag, so it is unavailable on Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, Claude Platform on AWS, apps gateways, or with telemetry or nonessential traffic disabled.",
            "Hooks, plugins and other settings are not imported.",
            "`claude mcp add-from-claude-desktop` works on macOS and WSL only."
          ]
        },
        "readsOthers": {
          "status": "partial",
          "answer": "Claude Code reads `AGENTS.md` (and `.claude/AGENTS.md`) as project instructions when there is no `CLAUDE.md`, `.claude/CLAUDE.md` or `CLAUDE.local.md`; setting Project instructions to `claude-md-and-agents-md` in `/config` loads both. It does not read other tools' skill folders such as `.agents/skills`, or MCP configs such as `claude_desktop_config.json`. `/init` also reads Cursor rules (`.cursor/rules/`, `.cursorrules`) and `.github/copilot-instructions.md` when it drafts a `CLAUDE.md`.",
          "reference": "https://code.claude.com/docs/en/memory#agents-md",
          "evidence": [
            "claude-memory-docs",
            "sessions-claude-code-code-claude-com-docs-en-desktop"
          ],
          "notes": [
            "Reading `AGENTS.md` directly needs v2.1.277 or later; on older versions put `@AGENTS.md` in your `CLAUDE.md`.",
            "With `CLAUDE_CODE_NEW_INIT=1`, `/init` also reads `.devin/rules/`, `.windsurf/rules/`, `.windsurfrules` and `.clinerules`."
          ]
        },
        "sessionsImport": {
          "status": "unsupported",
          "answer": "No. `/import` brings over configuration only, and there is no command to load another harness's conversations; Claude Code resumes only its own sessions (including ones moved from the cloud with `--teleport`).",
          "reference": "https://code.claude.com/docs/en/commands#all-commands",
          "evidence": ["claude-commands-docs", "claude-sessions-docs"]
        },
        "exportTo": {
          "status": "partial",
          "answer": "`/export [filename]` copies the current conversation to the clipboard or saves it as plain text, and `claude -p --output-format json|stream-json` or the Agent SDK's `getSessionMessages()` give structured data for scripts. There is no command that converts Claude Code setup or sessions into another harness's format.",
          "reference": "https://code.claude.com/docs/en/sessions#export-and-locate-session-data",
          "evidence": ["claude-sessions-docs"],
          "notes": [
            "Other tools can pull Claude Code setup in themselves; for example, Codex's `/import` reads Claude Code's settings, skills, `CLAUDE.md`, MCP servers, subagents and hooks."
          ]
        }
      },
      "observedVersion": "2.1.300",
      "method": "documentation",
      "surface": "cli"
    },
    {
      "harness": "codex",
      "variant": "claude-code-1983c48f-app-server",
      "default": true,
      "verifiedAt": "2026-09-30",
      "evidence": [
        "migration-1",
        "migration-2",
        "migration-3",
        "migration-4",
        "migration-5",
        "migration-6",
        "migration-7",
        "migration-8",
        "migration-9",
        "migration-10",
        "migration-11",
        "migration-12",
        "migration-13",
        "migration-14",
        "migration-15",
        "migration-16",
        "migration-17",
        "migration-18",
        "migration-19",
        "migration-20",
        "migration-21",
        "migration-22",
        "migration-23",
        "migration-24",
        "migration-25",
        "migration-26",
        "migration-27",
        "migration-28",
        "migration-29",
        "migration-30",
        "migration-31",
        "migration-32",
        "migration-33",
        "migration-34",
        "migration-35",
        "migration-36",
        "migration-37",
        "migration-38",
        "migration-39",
        "migration-40",
        "migration-41",
        "migration-42",
        "migration-43",
        "migration-44",
        "migration-45",
        "migration-46",
        "migration-47"
      ],
      "references": [
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/migration_source.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/service.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source/cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source/cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/model.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/plugins.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/scope.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/config_values.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/reporting.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/mcp.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/rewrite.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/subagents.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/hooks_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/hooks_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/hooks_common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/records_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/records_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/records_common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/title.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/export.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/ledger.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/append.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/connectors_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/connectors_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/memory.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/memory_import.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/memory.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/plugins.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/lib.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/utils.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server-protocol/src/protocol/common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server-protocol/src/protocol/v2/config.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server/src/external_agent_migration/processor.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server/src/external_agent_migration/session_importer.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server/src/external_agent_migration/protocol.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/tui/src/slash_command.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/tui/src/external_agent_config_migration/model.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/hooks/src/lib.rs"
      ],
      "support": {
        "configuration": "partial",
        "plugins": "partial",
        "skills": "partial",
        "instructions": "partial",
        "mcpServers": "partial",
        "subagents": "partial",
        "hooks": "partial",
        "commands": "partial",
        "memory": "partial",
        "sessions": "partial"
      },
      "method": "source-inspection",
      "surface": "app-server",
      "conditions": [
        "Applies only to the recorded surface and evidence revision; source inspection does not establish released availability.",
        "Detection may refresh session ledger; not guaranteed filesystem-pure.",
        "TUI /import explicitly names Claude Code; Cursor App Server selector does not establish Cursor TUI picker.",
        "Historical September 30 source inspection; current release applicability has not been established."
      ],
      "unknowns": [
        "No authenticated model request, runtime execution, or preservation probe was performed."
      ],
      "details": {},
      "sourceRevision": "1983c48fd186614529e4fad418ac38a1ae00c6b6",
      "sourceHarness": "claude-code",
      "selector": {
        "field": "migrationSource",
        "value": "claude",
        "fallback": "missing/unrecognized selects Claude Code; providerId is attribution only"
      },
      "categories": [
        {
          "dimension": "configuration",
          "source": "settings.json + settings.local.json",
          "destination": "config.toml or .codex/config.toml",
          "conversion": "selected config fields and scalar environment values; not wholesale translation",
          "conflicts": "add missing values"
        },
        {
          "dimension": "plugins",
          "source": "plugin/marketplace metadata",
          "destination": "Codex plugin/marketplace configuration",
          "conversion": "local/remote partition; remote imports may remain pending",
          "conflicts": "existing config participates in detection"
        },
        {
          "dimension": "skills",
          "source": "skills/",
          "destination": ".agents/skills",
          "conversion": "copy directories",
          "conflicts": "skip existing names"
        },
        {
          "dimension": "instructions",
          "source": "CLAUDE.md",
          "destination": "AGENTS.md",
          "conversion": "rewrite supported embedded references",
          "conflicts": "missing/empty target only"
        },
        {
          "dimension": "mcpServers",
          "source": ".mcp.json / .claude.json",
          "destination": "mcp_servers",
          "conversion": "stdio/HTTP definitions and selected headers/env placeholders; credentials not established",
          "conflicts": "add missing server names"
        },
        {
          "dimension": "subagents",
          "source": "agents/*.md",
          "destination": "CODEX_HOME/agents or .codex/agents TOML",
          "conversion": "supported Markdown frontmatter to TOML",
          "conflicts": "skip existing destinations"
        },
        {
          "dimension": "hooks",
          "source": "settings hooks",
          "destination": "CODEX_HOME/hooks.json or .codex/hooks.json",
          "conversion": "supported command handlers; translate timeouts/status and supported matchers",
          "conflicts": "missing/empty target only"
        },
        {
          "dimension": "commands",
          "source": "commands/",
          "destination": "Codex skills",
          "conversion": "commands to skills",
          "conflicts": "shared command migration helper"
        },
        {
          "dimension": "memory",
          "source": ".claude/projects/<project>/memory",
          "destination": "memories/extensions/external_agent_import",
          "conversion": "scoped resource synchronization and consolidation enqueue",
          "conflicts": "requires selected memory and state DB; retain reliable project cwd"
        },
        {
          "dimension": "sessions",
          "source": ".claude/projects/<project>/*.jsonl",
          "destination": "Codex thread history",
          "conversion": "synthetic turns with text tool notes; not native tool replay",
          "conflicts": "ledger and exact-prefix append guards"
        }
      ],
      "losses": [
        "thinking omitted",
        "images/unsupported blocks become textual placeholders",
        "tool calls/results become bounded historical text notes",
        "original native turns, exact token usage and tool execution are not preserved",
        "OAuth credentials and full SSE compatibility unestablished",
        "prompt/agent/async hooks and unsupported keys omitted"
      ],
      "failures": {
        "atomic": false,
        "reporting": "per-category and per-item success/errors, stage, scope, source/target and counts; plugins may partially succeed",
        "acceptanceMeansCompletion": false
      },
      "sessions": {
        "ledger": "$CODEX_HOME/external_agent_session_imports.json",
        "unchanged": "skip unchanged source by content hash/mapping",
        "changed": "unique mapping targets existing thread; ambiguous mapping skipped",
        "appendGuard": "complete destination model-visible history must be exact prefix of updated source; markers/history verified; equal transcript may refresh checkpoint",
        "concurrentImports": 5,
        "toolCallMaxCharacters": 2000,
        "toolResultMaxCharacters": 4000
      },
      "interfaces": {
        "requests": [
          "externalAgentConfig/detect",
          "externalAgentConfig/import",
          "externalAgentConfig/import/recordHistory",
          "externalAgentConfig/import/readHistories"
        ],
        "notifications": [
          "externalAgentConfig/import/progress",
          "externalAgentConfig/import/completed"
        ],
        "tuiCommand": "/import"
      },
      "relatedContracts": ["memories", "transcripts", "instructions", "hooks", "skill-invocation"],
      "answers": {
        "importFrom": {
          "status": "supported",
          "answer": "Yes, from Claude Code and Cursor. In a local TUI session, type `/import`. If both are found, choose a source, then tick what to bring over. Supported items are `CLAUDE.md`/`.cursorrules` to `AGENTS.md`, selected settings to `config.toml`, skills to `.agents/skills`, plugins and marketplaces, MCP servers, subagents to Codex agent TOML, hooks, slash commands converted to skills, project folders, and recent chats. Existing Codex files and entries are not overwritten.",
          "reference": "https://learn.chatgpt.com/docs/developer-commands#import-claude-code-or-cursor-setup-with-import",
          "evidence": [
            "codex-developer-commands-docs",
            "sessions-codex-learn-chatgpt-com-docs-import",
            "sessions-codex-codex-rs-tui-src-external-agent-config-migration-flow-rs",
            "sessions-codex-codex-rs-tui-src-external-agent-config-migration-source-rs",
            "sessions-codex-codex-rs-app-server-protocol-src-protocol-v2-config-rs"
          ],
          "notes": [
            "Claude Code project memories are imported only when you turn on the under-development `external_agent_memory_import` feature (`codex features enable external_agent_memory_import`). There is no Cursor memory import.",
            "From Cursor, only the legacy `.cursorrules` file becomes `AGENTS.md`; `.cursor/rules/*.mdc` are not imported.",
            "`/import` can't run while a task is running. The docs say it is also unavailable in remote or daemon sessions, but that limit was lifted in 0.157.0.",
            "Review imported hooks, MCP auth/headers and permissions afterwards; unsupported fields are dropped."
          ]
        },
        "readsOthers": {
          "status": "partial",
          "answer": "Mostly not. Codex reads `AGENTS.md` and skills in `.agents/skills`, a shared folder other tools also use. It does not read `.claude/skills`, `.mcp.json` or Cursor rules. To use `CLAUDE.md` directly, add it to `project_doc_fallback_filenames` in `config.toml`. It is then used only in directories without an `AGENTS.md`.",
          "reference": "https://learn.chatgpt.com/docs/agent-configuration/agents-md#customize-fallback-filenames",
          "evidence": ["codex-agents-md-docs", "plugin-skill-codex-local-docs"]
        },
        "sessionsImport": {
          "status": "partial",
          "answer": "Yes, through `/import`. Pick recent chats from Claude Code (`~/.claude/projects/...jsonl`) or Cursor agent transcripts, up to 50 chats from the last 30 days. They become Codex sessions you can resume. Each one gets the source's custom or AI title when it has one, and otherwise a title from its first message.",
          "reference": "https://learn.chatgpt.com/docs/import#import-in-codex-cli",
          "evidence": [
            "sessions-codex-learn-chatgpt-com-docs-import",
            "sessions-codex-codex-rs-external-agent-migration-src-sessions-title-rs",
            "sessions-codex-codex-rs-external-agent-migration-src-model-rs"
          ],
          "notes": [
            "Imported chats are text replays. Thinking is dropped, tool calls and results become short text notes, and images become placeholders. Re-running `/import` appends new turns to chats it has already imported."
          ]
        },
        "exportTo": {
          "status": "partial",
          "answer": "Codex has no export to other harnesses. You can export a chat as Markdown with `/export` (clipboard or file) or `/export session.md`. The raw session JSONL files stay under `~/.codex/sessions`. Setup lives in plain files that other tools can read or that you can copy by hand: `AGENTS.md`, `.agents/skills` and `~/.codex/config.toml`.",
          "reference": "https://learn.chatgpt.com/docs/developer-commands#export-a-conversation-with-export",
          "evidence": [
            "codex-developer-commands-docs",
            "sessions-codex-codex-rs-tui-src-chatwidget-transcript-export-rs"
          ]
        }
      }
    },
    {
      "harness": "codex",
      "variant": "cursor-agent-1983c48f-app-server",
      "default": false,
      "verifiedAt": "2026-09-30",
      "evidence": [
        "migration-1",
        "migration-2",
        "migration-3",
        "migration-4",
        "migration-5",
        "migration-6",
        "migration-7",
        "migration-8",
        "migration-9",
        "migration-10",
        "migration-11",
        "migration-12",
        "migration-13",
        "migration-14",
        "migration-15",
        "migration-16",
        "migration-17",
        "migration-18",
        "migration-19",
        "migration-20",
        "migration-21",
        "migration-22",
        "migration-23",
        "migration-24",
        "migration-25",
        "migration-26",
        "migration-27",
        "migration-28",
        "migration-29",
        "migration-30",
        "migration-31",
        "migration-32",
        "migration-33",
        "migration-34",
        "migration-35",
        "migration-36",
        "migration-37",
        "migration-38",
        "migration-39",
        "migration-40",
        "migration-41",
        "migration-42",
        "migration-43",
        "migration-44",
        "migration-45",
        "migration-46",
        "migration-47"
      ],
      "references": [
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/migration_source.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/service.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source/cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source/cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/model.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/plugins.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/scope.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/config_values.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/reporting.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/source/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/mcp.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/rewrite.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/subagents.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/hooks_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/hooks_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/hooks_common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/records_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/records_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/records_common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/title.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/export.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/ledger.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/sessions/append.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/connectors_cla.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/connectors_cur.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/sessions/mod.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/memory.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/memory_import.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/memory.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/detect/plugins.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/lib.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/external-agent-migration/src/utils.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server-protocol/src/protocol/common.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server-protocol/src/protocol/v2/config.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server/src/external_agent_migration/processor.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server/src/external_agent_migration/session_importer.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/app-server/src/external_agent_migration/protocol.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/tui/src/slash_command.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/tui/src/external_agent_config_migration/model.rs",
        "https://github.com/openai/codex/blob/1983c48fd186614529e4fad418ac38a1ae00c6b6/codex-rs/hooks/src/lib.rs"
      ],
      "support": {
        "configuration": "partial",
        "plugins": "partial",
        "skills": "partial",
        "instructions": "partial",
        "mcpServers": "partial",
        "subagents": "partial",
        "hooks": "partial",
        "commands": "partial",
        "memory": "unsupported",
        "sessions": "partial"
      },
      "method": "source-inspection",
      "surface": "app-server",
      "conditions": [
        "Applies only to the recorded surface and evidence revision; source inspection does not establish released availability.",
        "Detection may refresh session ledger; not guaranteed filesystem-pure.",
        "TUI /import explicitly names Claude Code; Cursor App Server selector does not establish Cursor TUI picker.",
        "Historical September 30 source inspection; current release applicability has not been established."
      ],
      "unknowns": [
        "No authenticated model request, runtime execution, or preservation probe was performed."
      ],
      "details": {},
      "sourceRevision": "1983c48fd186614529e4fad418ac38a1ae00c6b6",
      "sourceHarness": "cursor-agent",
      "selector": {
        "field": "migrationSource",
        "value": "cursor",
        "fallback": "missing/unrecognized selects Claude Code; providerId is attribution only"
      },
      "categories": [
        {
          "dimension": "configuration",
          "source": "cli-config.json / .cursor/cli.json",
          "destination": "config.toml or .codex/config.toml",
          "conversion": "selected config fields and scalar environment values; not wholesale translation",
          "conflicts": "add missing values"
        },
        {
          "dimension": "plugins",
          "source": "plugin/marketplace metadata",
          "destination": "Codex plugin/marketplace configuration",
          "conversion": "local/remote partition; remote imports may remain pending",
          "conflicts": "existing config participates in detection"
        },
        {
          "dimension": "skills",
          "source": "skills/ and home skills-cursor/",
          "destination": ".agents/skills",
          "conversion": "copy directories",
          "conflicts": "skip existing names"
        },
        {
          "dimension": "instructions",
          "source": ".cursorrules; not .cursor/rules/*.mdc",
          "destination": "AGENTS.md",
          "conversion": "rewrite supported embedded references",
          "conflicts": "missing/empty target only"
        },
        {
          "dimension": "mcpServers",
          "source": "mcp.json",
          "destination": "mcp_servers",
          "conversion": "stdio/HTTP definitions and selected headers/env placeholders; credentials not established",
          "conflicts": "add missing server names"
        },
        {
          "dimension": "subagents",
          "source": "agents/*.md",
          "destination": "CODEX_HOME/agents or .codex/agents TOML",
          "conversion": "supported Markdown frontmatter to TOML",
          "conflicts": "skip existing destinations"
        },
        {
          "dimension": "hooks",
          "source": "hooks.json",
          "destination": "CODEX_HOME/hooks.json or .codex/hooks.json",
          "conversion": "supported command handlers; translate timeouts/status and supported matchers",
          "conflicts": "missing/empty target only"
        },
        {
          "dimension": "commands",
          "source": "commands/",
          "destination": "Codex skills",
          "conversion": "commands to skills",
          "conflicts": "shared command migration helper"
        },
        {
          "dimension": "memory",
          "source": "unsupported",
          "destination": "memories/extensions/external_agent_import",
          "conversion": "unsupported",
          "conflicts": "requires selected memory and state DB; retain reliable project cwd"
        },
        {
          "dimension": "sessions",
          "source": ".cursor/projects/<project>/agent-transcripts/**/*.jsonl excluding subagents/",
          "destination": "Codex thread history",
          "conversion": "synthetic turns with text tool notes; not native tool replay",
          "conflicts": "ledger and exact-prefix append guards"
        }
      ],
      "losses": [
        "thinking omitted",
        "images/unsupported blocks become textual placeholders",
        "tool calls/results become bounded historical text notes",
        "original native turns, exact token usage and tool execution are not preserved",
        "OAuth credentials and full SSE compatibility unestablished",
        "prompt/agent/async hooks and unsupported keys omitted"
      ],
      "failures": {
        "atomic": false,
        "reporting": "per-category and per-item success/errors, stage, scope, source/target and counts; plugins may partially succeed",
        "acceptanceMeansCompletion": false
      },
      "sessions": {
        "ledger": "$CODEX_HOME/external_agent_session_imports.json",
        "unchanged": "skip unchanged source by content hash/mapping",
        "changed": "unique mapping targets existing thread; ambiguous mapping skipped",
        "appendGuard": "complete destination model-visible history must be exact prefix of updated source; markers/history verified; equal transcript may refresh checkpoint",
        "concurrentImports": 5,
        "toolCallMaxCharacters": 2000,
        "toolResultMaxCharacters": 4000
      },
      "interfaces": {
        "requests": [
          "externalAgentConfig/detect",
          "externalAgentConfig/import",
          "externalAgentConfig/import/recordHistory",
          "externalAgentConfig/import/readHistories"
        ],
        "notifications": [
          "externalAgentConfig/import/progress",
          "externalAgentConfig/import/completed"
        ],
        "tuiCommand": "/import"
      },
      "relatedContracts": ["memories", "transcripts", "instructions", "hooks", "skill-invocation"]
    },
    {
      "harness": "cursor-agent",
      "variant": "current",
      "default": true,
      "verifiedAt": "2026-10-15",
      "evidence": ["compaction-cursor-agent-cursor-com-docs-reference-third-party-hooks-e91ff1"],
      "references": [
        "https://cursor.com/docs/reference/third-party-hooks#migration-from-claude-code"
      ],
      "conditions": ["Documentation and source review; no live session probe."],
      "unknowns": ["No live session was run."],
      "details": {},
      "support": {
        "configuration": "unsupported",
        "plugins": "native",
        "skills": "native",
        "instructions": "partial",
        "mcpServers": "partial",
        "subagents": "native",
        "hooks": "native",
        "commands": "native",
        "memory": "unsupported",
        "sessions": "unsupported"
      },
      "answers": {
        "importFrom": {
          "status": "partial",
          "answer": "There is no import command or migration wizard. Instead the CLI reads Claude Code and Codex files in place every time it starts: Claude Code hooks from `.claude/settings.json`, `.claude/settings.local.json` and `~/.claude/settings.json`; Claude Code plugins; skills; subagents; commands; and `CLAUDE.md`. This is governed by the Include Third-Party Plugins, Skills, and Other Configs setting, which is on by default.",
          "reference": "https://cursor.com/docs/reference/third-party-hooks#migration-from-claude-code",
          "evidence": [
            "compaction-cursor-agent-cursor-com-docs-reference-third-party-hooks",
            "cursor-cli-changelog"
          ],
          "notes": [
            "Claude Code settings such as permissions, model or env are not read. Configure those in `~/.cursor/cli-config.json` or `.cursor/cli.json`.",
            "The built-in `/migrate-to-skills` skill only converts Cursor's own rules and commands to skills."
          ]
        },
        "readsOthers": {
          "status": "supported",
          "answer": "It reads `AGENTS.md`, `CLAUDE.md` and `CLAUDE.local.md`; skills in `.claude/skills`, `.codex/skills`, `.agents/skills` and the matching home-directory folders; and subagents in `.claude/agents`, `.codex/agents`, `~/.claude/agents` and `~/.codex/agents`. It also reads Claude Code hooks from `.claude/settings*.json` and `~/.claude/settings.json`, and enabled Claude Code plugins. In CLI 2026.10.12 it also loads commands from `.claude/commands` and `~/.claude/commands`, and installed Claude Code plugins listed in `~/.claude/plugins/installed_plugins.json`, honoring `enabledPlugins`. Those plugins bring their skills, agents, commands, hooks and MCP servers.",
          "reference": "https://cursor.com/docs/skills#skill-directories",
          "evidence": [
            "skills-cursor-agent-cursor-com-docs-skills",
            "cursor-subagents-docs",
            "instructions-cursor-agent-cursor-com-help-customization-rules",
            "compaction-cursor-agent-cursor-com-docs-reference-third-party-hooks",
            "cursor-cli-changelog"
          ],
          "notes": [
            "Not read: `~/.claude/CLAUDE.md`, `.claude/rules/`, `GEMINI.md`, project `.mcp.json`, `~/.claude.json` MCP servers, and Codex `config.toml`. Add MCP servers to `.cursor/mcp.json` or `~/.cursor/mcp.json`.",
            "Claude Code `Notification` and `PermissionRequest` hooks are not supported.",
            "When names clash, `.cursor/` skills and subagents win over `.claude/` and `.codex/`."
          ]
        },
        "sessionsImport": {
          "status": "unsupported",
          "answer": "No. The CLI can't import Claude Code, Codex or other harnesses' sessions; `--resume` only opens Cursor's own chats under `~/.cursor/chats`.",
          "reference": "https://cursor.com/docs/cli/using#history",
          "evidence": ["cursor-cli-using-docs"],
          "notes": [
            "In CLI 2026.10.12 a hidden, undocumented `-p`-only flag, `--conversation-history-file`, takes history in Cursor's internal format, not other tools' transcripts."
          ]
        },
        "exportTo": {
          "status": "partial",
          "answer": "There is no export command for setup or sessions. Each chat is mirrored as JSONL at `~/.cursor/projects/<slug>/agent-transcripts/<chatId>/<chatId>.jsonl`, which you can copy yourself. Setup kept in shared formats (`AGENTS.md`, `.agents/skills`) is read by other harnesses directly. Prefixing a message with `&` hands the chat to a Cloud Agent, but that stays inside Cursor.",
          "reference": "https://cursor.com/docs/cli/using#cloud-agent-handoff",
          "evidence": [
            "cursor-cli-using-docs",
            "transcripts-cursor-agent-cursor-com-help-ai-features-shared-transcripts"
          ],
          "notes": [
            "Share links are created from the Cursor editor (Teams and Enterprise plans), not the CLI."
          ]
        }
      },
      "observedVersion": "2026.10.12-d47ca18",
      "method": "documentation",
      "surface": "cli"
    },
    {
      "harness": "opencode",
      "variant": "1.x",
      "default": false,
      "verifiedAt": "2026-10-15",
      "evidence": ["memory-opencode-opencode-ai-docs-rules-d8dc61"],
      "references": ["https://opencode.ai/docs/rules/#claude-code-compatibility"],
      "conditions": ["Documentation and source review; no live session probe."],
      "unknowns": ["No live session was run."],
      "details": {},
      "support": {
        "configuration": "unsupported",
        "plugins": "unsupported",
        "skills": "native",
        "instructions": "native",
        "mcpServers": "unsupported",
        "subagents": "unsupported",
        "hooks": "unsupported",
        "commands": "unsupported",
        "memory": "unsupported",
        "sessions": "unsupported"
      },
      "answers": {
        "importFrom": {
          "status": "unsupported",
          "answer": "There is no import command for another harness's setup. OpenCode reads Claude Code's `CLAUDE.md` and skills directly, but settings, MCP servers, agents, commands, and hooks have to be rewritten into `opencode.json` or `.opencode/` by hand.",
          "reference": "https://opencode.ai/docs/rules/#claude-code-compatibility",
          "evidence": ["memory-opencode-opencode-ai-docs-rules"]
        },
        "readsOthers": {
          "status": "supported",
          "answer": "It reads `CLAUDE.md` in the project and `~/.claude/CLAUDE.md` globally when no matching `AGENTS.md` exists, plus skills in `.claude/skills/` and `.agents/skills/` (project, walking up) and `~/.claude/skills/` and `~/.agents/skills/`. Turn this off with `OPENCODE_DISABLE_CLAUDE_CODE=1`, or only part of it with `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1` or `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1`.",
          "reference": "https://opencode.ai/docs/rules/#claude-code-compatibility",
          "evidence": [
            "memory-opencode-opencode-ai-docs-rules",
            "opencode-skills-docs",
            "memory-opencode-packages-opencode-src-session-instruction-ts",
            "skills-opencode-packages-opencode-src-skill-index-ts"
          ],
          "notes": [
            "`OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1` also drops the project `CLAUDE.md` fallback, not just `~/.claude/CLAUDE.md`.",
            "`OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1` skips `.claude/skills` only; `.agents/skills` is still read."
          ]
        },
        "sessionsImport": {
          "status": "unsupported",
          "answer": "No. `opencode import <file>` only accepts OpenCode's own export JSON or an OpenCode share URL (for example `https://opncd.ai/s/abc123`), not another harness's transcripts.",
          "reference": "https://opencode.ai/docs/cli/#import",
          "evidence": [
            "opencode-cli-stable-docs",
            "sessions-opencode-packages-opencode-src-cli-cmd-import-ts"
          ]
        },
        "exportTo": {
          "status": "partial",
          "answer": "`opencode export [sessionID]` writes a session as JSON (`--sanitize` redacts transcript and file data), `/export` in the TUI writes the conversation as Markdown, and `/share` publishes a share link. These are OpenCode formats; there is no exporter for another harness's setup or sessions.",
          "reference": "https://opencode.ai/docs/cli/#export",
          "evidence": [
            "opencode-cli-stable-docs",
            "opencode-tui-docs",
            "transcripts-opencode-opencode-ai-docs-share"
          ]
        }
      },
      "observedVersion": "1.19.0",
      "method": "documentation",
      "surface": "cli"
    },
    {
      "harness": "opencode",
      "variant": "2.x",
      "default": true,
      "verifiedAt": "2026-10-15",
      "evidence": ["instructions-opencode-opencode-ai-v2-docs-migrate-v1-923a2e"],
      "references": ["https://opencode.ai/v2/docs/migrate-v1/#use-your-existing-configuration"],
      "conditions": ["Documentation and source review; no live session probe."],
      "unknowns": ["No live session was run."],
      "details": {},
      "support": {
        "configuration": "partial",
        "plugins": "unsupported",
        "skills": "native",
        "instructions": "unsupported",
        "mcpServers": "partial",
        "subagents": "partial",
        "hooks": "unsupported",
        "commands": "partial",
        "memory": "unsupported",
        "sessions": "partial"
      },
      "answers": {
        "importFrom": {
          "status": "partial",
          "answer": "Only from OpenCode V1. V2 reads V1 `opencode.json(c)` and `.opencode/` agents, commands, skills, and MCP servers from the same locations and normalizes them in memory, migrates global `tui.json` into `~/.config/opencode/cli.json` on first start, and you can ask OpenCode to rewrite your config into the native V2 shape. V1 plugins must be ported, and nothing is imported from other harnesses apart from the skills it reads directly.",
          "reference": "https://opencode.ai/v2/docs/migrate-v1/#use-your-existing-configuration",
          "evidence": ["instructions-opencode-opencode-ai-v2-docs-migrate-v1"]
        },
        "readsOthers": {
          "status": "partial",
          "answer": "Only skills: `.claude/skills` and `.agents/skills` in the project (walking up), and `~/.claude/skills` and `~/.agents/skills` globally. V2 does not read `CLAUDE.md` (only `AGENTS.md`), or other harnesses' agents, commands, MCP configs, or hooks.",
          "reference": "https://opencode.ai/v2/docs/skills/#discovery",
          "evidence": [
            "skills-opencode-opencode-ai-v2-docs-skills",
            "memory-opencode-opencode-ai-v2-docs-instructions",
            "skills-opencode-packages-core-src-config-plugin-compatibility-ts"
          ],
          "notes": [
            "If you relied on the V1 `CLAUDE.md` fallback, move that guidance into `AGENTS.md`."
          ]
        },
        "sessionsImport": {
          "status": "partial",
          "answer": "V1 sessions are copied automatically: on first start the V2 server migrates the V1 session tables in the same `opencode.db` (and any `opencode-next.db` beta database) into V2 format and shows a progress overlay in the TUI. `opencode session import <file|url>` accepts only V2 export JSON, and nothing imports other harnesses' sessions.",
          "reference": "https://github.com/anomalyco/opencode/blob/042d0832f5f3a73eaa039a58a7d565776f6d4290/packages/core/src/database/v1-migration.bun.ts#L505-L521",
          "evidence": [
            "sessions-opencode-packages-core-src-database-v1-migration-bun-ts",
            "sessions-opencode-packages-cli-src-commands-handlers-session-import-ts",
            "instructions-opencode-opencode-ai-v2-docs-api"
          ],
          "notes": ["Migrated V1 sessions lose their per-session permission overrides."]
        },
        "exportTo": {
          "status": "partial",
          "answer": "`opencode session export [id]` writes a session as JSON (`--sanitize` redacts it) and `/export` in the TUI saves a transcript. These use OpenCode's own format, sharing is not available in V2 yet, and there is no exporter for another harness.",
          "reference": "https://github.com/anomalyco/opencode/blob/042d0832f5f3a73eaa039a58a7d565776f6d4290/packages/cli/src/commands/commands.ts#L444-L457",
          "evidence": [
            "opencode-2-0-29-source",
            "instructions-opencode-opencode-ai-v2-docs-config",
            "steering-opencode-packages-tui-src-routes-session-index-tsx"
          ]
        }
      },
      "observedVersion": "2.0.29",
      "method": "documentation",
      "surface": "cli"
    },
    {
      "harness": "pi",
      "variant": "current",
      "default": true,
      "verifiedAt": "2026-10-15",
      "evidence": ["mcp-pi-packages-coding-agent-docs-mcp-md-68ac2a"],
      "references": [
        "https://github.com/earendil-works/pi/blob/06a466935536f8c9bcacb2d5efc0fc021be1bdff/packages/coding-agent/docs/mcp.md#L104-L113"
      ],
      "conditions": ["Documentation and source review; no live session probe."],
      "unknowns": ["No live session was run."],
      "details": {},
      "support": {
        "configuration": "unsupported",
        "plugins": "unsupported",
        "skills": "partial",
        "instructions": "partial",
        "mcpServers": "partial",
        "subagents": "unsupported",
        "hooks": "unsupported",
        "commands": "unsupported",
        "memory": "unsupported",
        "sessions": "unsupported"
      },
      "answers": {
        "importFrom": {
          "status": "partial",
          "answer": "There is no import command for another harness's setup. The MCP docs explain how to move servers by hand: copy `mcpServers` entries from Claude Desktop, Claude Code or Cursor into `~/.pi/agent/mcp.json` or `.pi/mcp.json` as they are, convert Codex TOML or VS Code and OpenCode entries, then run `pi mcp list` to check them.",
          "reference": "https://github.com/earendil-works/pi/blob/06a466935536f8c9bcacb2d5efc0fc021be1bdff/packages/coding-agent/docs/mcp.md#L104-L113",
          "evidence": ["mcp-pi-packages-coding-agent-docs-mcp-md"]
        },
        "readsOthers": {
          "status": "partial",
          "answer": "Pi reads `AGENTS.md` and, in any folder without one, `CLAUDE.md` from the agent directory, the working folder and its parents. It also loads skills from the shared Agent Skills folders `~/.agents/skills/` and `.agents/skills/`. It does not read `~/.claude/CLAUDE.md`, `.claude/skills`, `.claude/commands`, other harnesses' MCP configs, hooks or subagents.",
          "reference": "https://github.com/earendil-works/pi/blob/06a466935536f8c9bcacb2d5efc0fc021be1bdff/packages/coding-agent/docs/configuration.md#L18",
          "evidence": [
            "memory-pi-packages-coding-agent-docs-configuration-md",
            "instructions-pi-packages-coding-agent-docs-skills-md",
            "memory-pi-packages-coding-agent-src-core-resource-loader-ts"
          ],
          "notes": [
            "You can point the `skills` setting or `--skill <path>` at another harness's skills folder yourself."
          ]
        },
        "sessionsImport": {
          "status": "unsupported",
          "answer": "No. `/import <path.jsonl>` copies a session file into Pi's session folder and resumes it, but it only accepts Pi's own JSONL format; a file whose first line is not a Pi session header loads as empty.",
          "reference": "https://github.com/earendil-works/pi/blob/06a466935536f8c9bcacb2d5efc0fc021be1bdff/packages/coding-agent/docs/slash-commands.md#L31",
          "evidence": [
            "instructions-pi-packages-coding-agent-docs-slash-commands-md",
            "sessions-pi-packages-coding-agent-src-core-agent-session-runtime-ts",
            "transcripts-pi-packages-coding-agent-src-core-session-manager-ts"
          ]
        },
        "exportTo": {
          "status": "partial",
          "answer": "Sessions only. `/export` writes the current session as HTML, or as Pi JSONL when the path ends in `.jsonl` (active branch only); `pi --export <file> [output]` makes HTML from the shell, and `/share` uploads it as a private GitHub gist or Radius artifact. There is no export of settings, skills or MCP config for another harness.",
          "reference": "https://github.com/earendil-works/pi/blob/06a466935536f8c9bcacb2d5efc0fc021be1bdff/packages/coding-agent/docs/sessions.md#L56-L60",
          "evidence": [
            "memory-pi-packages-coding-agent-docs-sessions-md",
            "pi-docs-1-2-0",
            "instructions-pi-packages-coding-agent-docs-slash-commands-md",
            "sessions-pi-packages-coding-agent-src-core-session-export-ts",
            "steering-pi-kages-coding-agent-src-modes-interactive-interactive-mode-ts"
          ],
          "notes": [
            "Exports can contain prompts, tool output, file contents and credentials, so review them before sharing."
          ]
        }
      },
      "observedVersion": "1.2.0",
      "method": "documentation",
      "surface": "cli"
    }
  ]
}
