Show HN: Sync Claude Code and Codex configs, with a board that shows the drift A new open-source CLI tool, ai-config-sync-manager, provides continuous bidirectional sync between Claude Code and Codex configurations, preserving YAML round-trip integrity across repeated syncs. The tool auto-translates host-specific tokens like Claude's Read to Codex's workspace-write and vice versa, and includes a visual inventory board showing drift status. It requires Node.js 20+ and either Claude Code or Codex CLI installed. Continuous bidirectional sync between Claude Code and Codex — round-trip lossless, not a one-shot migrator. Continuous bidirectional sync — claude → codex and codex → claude , run as often as the two hosts drift; not a one-shot migration. Strict YAML round-trip — Claude lenient YAML and Codex YAML 1.2 strict frontmatter both preserved across repeated syncs without loss or oscillation. Diff-first workflow — status to compare → sync --dry-run to preview → --apply to write. Risk-tagged operations — permissions , hooks , custom commands labeled safe / partial / manual . Backup-on-write — every overwrite snapshotted under .backups/ , FIFO retention 30 . Apply ledger — every --apply writes a per-item sha256 attestation before/after hash, backup path to ~/.ai-config-sync-manager/ledgers/ . Selector syntax — --include skills:code-writer,instructions --exclude mcp style filtering. Native semantic mapping — Claude Write → Codex sandbox mode = "workspace-write" , etc. Prose-level token rewriting — Claude-only tokens Read , Bash , TaskCreate , headless claude -p and Codex-only tokens spawn agent , codex exec auto-translate across hosts and round-trip back. Zero runtime dependencies — single ESM file, Node built-ins only. Thin host plugins — /config-manager: for Claude, config-manager- for Codex. Visual inventory board — board renders a self-contained HTML page of every skill, agent, hook, and MCP server on both hosts, colored by sync status in-sync / conflict / one-host-only and grouped into per-area tabs and by agent harness. Jump to the board → board Claude Code and Codex use the same concepts instructions / skills / mcp / permissions / hooks but in different files, formats, and names : | Concept | Claude | Codex | |---|---|---| | Instructions | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md | | Skills | ~/.claude/skills/ | ~/.codex/skills/ | | Settings | ~/.claude/settings.json | ~/.codex/config.toml | | MCP | ~/.claude/.mcp.json | mcp servers. in config.toml | Hand-rolling the sync invites drift, semantic loss, and accidental secret leaks . This CLI keeps the two hosts aligned while preserving host-native meaning. This tool is built for two hosts in continuous use — where drift accumulates daily and round-trip integrity matters across repeated syncs — not for a one-shot, one-way migration. One-shot migrators typically copy Claude-only vocabulary tool names like Read / Bash , prose like Use the Bash tool , in-line Agent {...} calls into the generated file as prompt guidance and flag it for manual review. This CLI instead auto-rewrites those tokens to their host equivalents Read → workspace-write , TaskCreate → spawn agent , claude -p → codex exec , … and round-trips them back when syncing the other direction — so the same content stays correct for both hosts with no manual fix-ups. npm install -g ai-config-sync-manager ai-config-sync connect register the plugin for any detected host Claude / Codex ai-config-sync status show drift across global + project scopes ai-config-sync sync preview changes --dry-run by default ai-config-sync sync --apply apply with automatic backups connect only registers plugins for hosts it actually finds ~/.claude for Claude, ~/.codex or ~/.agents for Codex . Hosts that are missing are reported as skipped and no directories are created — install the host first, then rerun connect . - Node.js ≥ 20 - Claude Code and/or Codex CLI installed host plugins are auto-registered by connect when the matching host directory exists | Category | Sections | |---|---| Commands | | Workflow Selector syntax selector-syntax · Ignore rules ignore-rules · Sync direction sync-direction · Scopes scopes Safety Safety defaults safety-defaults · Risk levels risk-levels · Retention retention Mapping Native mapping native-mapping-claude--codex · Areas areas · Paraphrase paraphrase · Hidden markers hidden-markers · Unsupported unsupported Reference Install resolution install-resolution · Local dev local-dev-from-this-repo · Gotchas gotchas · API surface api-surface · What's next whats-next After npm install -g , the same binary is on PATH as ai-config-sync — equivalent to ./bin/ai-config-sync.mjs from a source clone. ai-config-sync connect ai-config-sync status ai-config-sync status --json ai-config-sync status --scope global ai-config-sync status --scope project ai-config-sync status --include skills:code-writer,instructions --exclude mcp ai-config-sync sync --dry-run ai-config-sync sync --scope project --dry-run ai-config-sync sync --scope global --apply ai-config-sync sync --include instructions,skills:code-writer --exclude mcp --dry-run ai-config-sync sync --from claude --to codex ai-config-sync sync --from codex --to claude ai-config-sync board ai-config-sync board --scope global --no-open ai-config-sync reference ai-config-sync paraphrase | Command | Purpose | |---|---| connect | Detect installed hosts and register the matching plugin | status | Compare global + project config across both hosts | status --json | Machine-readable diff | sync --dry-run | Preview the merge plan without writing | sync --apply | Apply the plan, snapshot to .backups/ | board | Render an HTML inventory board of both hosts, colored by sync status | reference | Emit / persist a self-generated markdown reference | paraphrase | Line-level override archive for instruction wording | | Host | Connect | Status | Sync | Paraphrase | |---|---|---|---|---| Claude | /config-manager:connect | /config-manager:status | /config-manager:sync | /config-manager:paraphrase | Codex | config-manager-connect | config-manager-status | config-manager-sync | config-manager-paraphrase | Per-subcommand flag reference, mirroring