{
  "$schema": "https://bringyour.ai/schemas/codex-import-checklist.v1.json",
  "id": "bringyour-codex-import-checklist",
  "title": "Codex import checklist for Claude Code users",
  "url": "https://bringyour.ai/codex-import-checklist",
  "html_url": "https://bringyour.ai/codex-import-checklist",
  "json_url": "https://bringyour.ai/codex-import-checklist.json",
  "product": "Bring Your AI",
  "updated_at": "2026-05-08",
  "remote_invariant": {
    "harness_data_remote": false,
    "notes": "The public checklist is descriptive only. Bring Your AI remote MCP and JSON routes do not accept harness files, generated memories, user rules, API keys, GitHub handles, or file contents."
  },
  "recommended_sequence": [
    {
      "order": 1,
      "name": "Run the first-party Codex importer",
      "outcome": "Create the initial Codex-side import checklist and imported setup."
    },
    {
      "order": 2,
      "name": "Run a local validation preview",
      "command": "bringyour preview --from claude-code --to codex",
      "outcome": "List supported moves and non-equivalent behavior without modifying source files."
    },
    {
      "order": 3,
      "name": "Apply with merge policy",
      "command": "bringyour migrate --from claude-code --to codex --policy merge",
      "outcome": "Write Codex-side files only after rollback snapshots and validation notes are created."
    }
  ],
  "checks": [
    {
      "id": "hooks",
      "label": "Hooks are not portable by default",
      "agent_question": "Which Claude Code lifecycle hooks have no Codex-equivalent enforcement path?",
      "pass_condition": "Every hook has an explicit port, replacement, or validation note."
    },
    {
      "id": "agent_restrictions",
      "label": "Per-agent restrictions need an enforcement check",
      "agent_question": "Which skill, subagent, or role limits depend on Claude Code-specific metadata or tool allowlists?",
      "pass_condition": "Each restriction is either enforced by Codex or recorded as a target-side validation note."
    },
    {
      "id": "mcp_secrets",
      "label": "MCP env values should not become literal secrets",
      "agent_question": "Does any MCP server config contain secret values instead of keychain, environment, or vault references?",
      "pass_condition": "Target config preserves references and redactions, not raw secret values."
    },
    {
      "id": "session_artifacts",
      "label": "Session artifacts are context, not instructions",
      "agent_question": "Which transcripts, logs, and handoff files should stay as review material instead of active AGENTS.md guidance?",
      "pass_condition": "Historical artifacts are excluded from the instruction path unless intentionally promoted."
    },
    {
      "id": "rollback",
      "label": "Target roots need rollback snapshots",
      "agent_question": "Can the target Codex setup be restored if the merge writes a bad instruction or config file?",
      "pass_condition": "Rollback snapshots exist before any target-side write."
    }
  ],
  "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",
    "license_fulfillment": "https://bringyour.ai/api/v1/license"
  }
}
