{
  "$schema": "https://bringyour.ai/schemas/claude-code-to-codex-tools.v1.json",
  "id": "bringyour-claude-code-to-codex-tools",
  "title": "Claude Code to Codex migration tools comparison",
  "url": "https://bringyour.ai/claude-code-to-codex-tools",
  "html_url": "https://bringyour.ai/claude-code-to-codex-tools",
  "json_url": "https://bringyour.ai/claude-code-to-codex-tools.json",
  "product": "Bring Your AI",
  "updated_at": "2026-09-09",
  "positioning": "Use native Codex import first. Review and test its result; choose a separate Bring Your AI migration only when needed.",
  "remote_invariant": {
    "harness_data_remote": false,
    "accepts_user_rules": false,
    "accepts_file_contents": false,
    "accepts_api_keys": false,
    "notes": "This comparison is descriptive only. Bring Your AI remote routes do not accept harness files, generated memories, user rules, API keys, GitHub handles, repo paths, MCP config files, or file contents."
  },
  "comparison": [
    {
      "id": "codex_first_party_import",
      "name": "Codex first-party import",
      "best_for": "Importing selected local setup, projects, and recent chats, including instructions, settings, skills, memories, hooks, MCP, plugins, and subagents.",
      "limitation": "Imported connections, permissions, hooks, and prompt behavior still need review. Import success does not establish runtime parity.",
      "bringyour_role": "Optional alternative migration workflow; not a required validation step after native import."
    },
    {
      "id": "official_migration_skill",
      "name": "Official migrate-to-codex skill",
      "url": "https://github.com/openai/skills/tree/main/skills/.curated/migrate-to-codex",
      "best_for": "Source scanning, staged plans, dry-runs, migration, and static target validation through a separate official skill.",
      "limitation": "Normal migration writes files; merge can replace colliding generated artifacts. Review the plan and retain a recovery copy. Static checks do not prove runtime behavior.",
      "bringyour_role": "Compare exact migration and recovery needs before choosing either workflow."
    },
    {
      "id": "manual_agents_md",
      "name": "Manual AGENTS.md / CLAUDE.md editing",
      "best_for": "Small repos where the only meaningful state is one instruction file.",
      "limitation": "Easy to miss nested rules, managed policy, skills, MCP wrappers, hooks, generated artifacts, and rollback proof.",
      "bringyour_role": "Inventory and classify non-file-copy migration surfaces before editing by hand."
    },
    {
      "id": "local_bringyour_cli",
      "name": "Bring Your AI local CLI",
      "best_for": "Optional local migration with planned writes/skips, explicit merge policy, and pre-migration snapshots of existing nonempty harness targets.",
      "limitation": "An activated license is required for migration planning and writes. Manifest verification applies to Bring Your AI output, not arbitrary native imports; runtime checks remain separate.",
      "bringyour_role": "Free preview checks presence and direction. Review a local migration dry-run before chosen writes, then verify its manifest and test the actual target behavior."
    },
    {
      "id": "remote_mcp_discovery",
      "name": "Bring Your AI remote MCP discovery",
      "best_for": "Agent discovery, target list, install instructions, product quote, and checkout handoff.",
      "limitation": "By design, remote MCP does not accept harness files or config contents.",
      "bringyour_role": "Keep remote surfaces no-data; do all sensitive migration work locally."
    }
  ],
  "decision_rules": [
    "If native import meets your needs, review its changes and run a representative target task. A second migration is not required for validation.",
    "If the setup includes hooks, MCP servers, skills, generated memories, or managed policy, add a local validation pass.",
    "If MCP config includes env, Keychain, 1Password, or vault helpers, never paste literal values into the target.",
    "If session logs or generated artifacts are useful only as history, keep them as reference notes instead of active instructions.",
    "Keep a recovery copy of the harness before migration and separate project backups or version control before production-code edits. Harness rollback does not restore application binaries, chats, or all project files."
  ],
  "local_commands": [
    "bringyour preview --from claude-code --to codex",
    "bringyour migrate --from claude-code --to codex --src \"$HOME/.claude\" --dst \"$HOME/.codex\" --policy merge --dry-run",
    "bringyour migrate --from claude-code --to codex --src \"$HOME/.claude\" --dst \"$HOME/.codex\" --policy merge",
    "bringyour verify --root \"$HOME/.codex\""
  ],
  "agent_readable_surfaces": {
    "openapi": "https://bringyour.ai/openapi.yaml",
    "agent_manifest": "https://bringyour.ai/.well-known/agent.json",
    "commerce_manifest": "https://bringyour.ai/.well-known/commerce.json",
    "catalog": "https://bringyour.ai/api/v1/catalog",
    "quote": "https://bringyour.ai/api/v1/quote",
    "checkout": "https://bringyour.ai/api/v1/checkout"
  },
  "related_guides": {
    "claude_code_to_codex": "https://bringyour.ai/claude-code-to-codex.json",
    "codex_import_checklist": "https://bringyour.ai/codex-import-checklist.json",
    "codex_import_audit": "https://bringyour.ai/codex-import-audit.json",
    "mcp_config_migration": "https://bringyour.ai/mcp-config-migration.json",
    "agents_md_claude_md": "https://bringyour.ai/agents-md-claude-md.json"
  },
  "local_command_scope": "Optional Bring Your AI migration using default source/target directories. Preview checks presence/direction; dry-run plans without writes; migrate without dry-run writes. Verify needs Bring Your AI portable-manifest.json and does not prove runtime behavior. An empty target has no prior rollback snapshot."
}
