{"_id":"@anhnguyen0905/codex-mcp","_rev":"19-0e072203e5675dadd2df192668719235","name":"@anhnguyen0905/codex-mcp","dist-tags":{"latest":"0.28.0"},"versions":{"0.3.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.3.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"7e107b6393153745d41cb719ae9228b259d6e7da","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.3.0.tgz","fileCount":38,"integrity":"sha512-yqJGjSQ4DcSX6vDdPmaSMEbQE2UhO/hlYAJNn6s5LjCzUvdZCI4ud/Ayd5TzIdCiOdAE3lZytMMuky4jwZIvnA==","signatures":[{"sig":"MEUCIQD5esg9NX+4qDUCegGqIr/EQyzDEBJwxkZhZTq5BsTIlwIgEPLXUqJF+3+e0ork7ia84hHwvcdnNY9TZZqM8ytQ8Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74801},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"20b13882c5d59eaad8455f6c8199d08a7ace2831","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs"},"_npmUser":{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.3.0_1783700123725_0.1410701601049782","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@anhnguyen0905/codex-mcp","version":"0.3.2","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.3.2","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"cfe544e36c09da07c4302af8981fcd258c820498","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.3.2.tgz","fileCount":38,"integrity":"sha512-I26I7rMvcJ+5Wqi8c9qslaXWfJt21fihS+HGH7V17EhKvqSuvWxrpSo/jxjflr0mxBSGgpFoyf/Ivz2jnnDlDQ==","signatures":[{"sig":"MEQCICbbdVHTh4SclH+SPsUN7ymCI4iD5XU3x2HHfnd31QdaAiB284I2dka33Orf7t9IvsRPfQO4Om4as+Jxip8mDB3tYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81246},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"347e9aa99396f57c06662caa6694151ab2fd5ad8","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs"},"_npmUser":{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.3.2_1783704431597_0.4166429203083222","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@anhnguyen0905/codex-mcp","version":"0.15.1","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.15.1","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"d7cb29ecb5db88b2a53d70e47aa306cb4c3bba47","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.15.1.tgz","fileCount":131,"integrity":"sha512-xsPeLvrj5pDPWRqy2EGQwr9vP4uoIPSd4rAZJrM7OPsmJMqmvH+FNYGKil+Cl1tzZrdzkN+2LkvzVDxyA3I47A==","signatures":[{"sig":"MEUCIQDx2dRC81XKjCjoyZXvjkMxfq0vRCubL3/Sx4JXi/MlNgIgMrOzwbr7i6lRtQPSoR36RHbnST3lsfX8JUhSulHaDzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":894369},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"78134c125142b422b1c715acf2799cccd6d000fd","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.15.1_1785149091806_0.09008110551430293","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.16.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.16.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"fdeab9c9f2951881fca06be25e2897f61adfa8e4","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.16.0.tgz","fileCount":146,"integrity":"sha512-UTnlZ1ZV70gIXIUWH4bItxoH5TG7XL5s9QrLG6/t/FWBOamvcWj+ZQhI18aTfqtikOIFByP3OuJR6lgFU3CP/Q==","signatures":[{"sig":"MEYCIQC02F+sFUldTahR6lHKgiBhYMJTrW1Fmwp3fdjHVYYNvAIhAOejXJfDwz3ZkNpIiqHiIavtAczML7DO15Q0T0xmxBuc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":987351},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"c64a4c1785bcbf05bdc742019808836d9c044f6e","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.16.0_1785345120742_0.6397745057389512","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.17.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.17.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"677ac0bfb7087d3093a825deeaf044b7c9eb9e31","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.17.0.tgz","fileCount":147,"integrity":"sha512-YznAdFUMln/ckql/H8TCMz3QPO73HkHCxOtD3bInI+pCVfXJis4AF3xHP45jhyyod2owk/MVrEg9e4JtvfH/CA==","signatures":[{"sig":"MEUCIQDlRXIMgeaaIleB5uChVOc7eFOpierDpf8O4mu3NzIZqQIgN7S4SFl86OuZqQCBuL0KYAm6SVROV7k6A6nmhi0ONsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":994469},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"6c33c15a34c85d55ead335f52415aca612648049","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.17.0_1785517116974_0.28756486112025015","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.18.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.18.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"a23edc0efa5a97d0d7a8b2871651c6e4e92490cf","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.18.0.tgz","fileCount":148,"integrity":"sha512-cpyOmCweQ+pXCT0/ed/4GHInAs6RXA0abfq7Nl6wuC5OouaUNtBXYZNBV29SML+RFEUEQC/9+gQ8EsDbDVRerg==","signatures":[{"sig":"MEUCIGElbjQKhNB/ftrP1svB3LAsMda6sP/xKE2KoFlY4Ze2AiEAsV7Jiceqsf1lh9rCy0n8JWsL96wfd0emeNiS6+N0ww4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":997837},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"d281f4b1193af275ba2a1911fa02f422ea9df609","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.18.0_1785858762293_0.6890373180927984","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.19.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.19.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"9502c1196836f0d23812b852341dcfa58e4eebdd","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.19.0.tgz","fileCount":151,"integrity":"sha512-idD2LR8yb+04s1JtyDvQVhLFhOvWJwM2vmOFazdHr8gfG3ZJOFsKMiVMTVUDeGNR7PphDoeZXwCdpvDddnZ67A==","signatures":[{"sig":"MEYCIQDGbpdHheViAYSN+BDv1JRJfdUdktl0R1C51Yte5IuUCwIhAJtohnJl7cg2qLjZI3CtZmNhsamiSC9g07RLvvAEz09w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1080203},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"8acde6c6719ed87ec11e0f0b393c294a6ebe2099","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.19.0_1786094546964_0.6855756250082352","host":"s3://npm-registry-packages-npm-production"}},"0.19.1":{"name":"@anhnguyen0905/codex-mcp","version":"0.19.1","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.19.1","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"73d2182e2b7c23cfa0557f139c5b1ed3dc47aa3a","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.19.1.tgz","fileCount":153,"integrity":"sha512-uqTUvHIEtPsEHwrmM0x8tYShDhhKekujprL9RioXCRihlO+HnICr9a8h8bxTgXHTidJ3r+4OlEgaTzHWtXlwVQ==","signatures":[{"sig":"MEUCIC8tR45Q9XqVdELoapDdLPvPkW0qna/e/nXOCvv7pVfBAiEAsLqYYQZVNRoaHflQr9sII1vHakDTUWJvLjwaLsianwo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1106697},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"c7df127660728d5016bcfb4393fedc15b66b3b73","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.19.1_1786118274982_0.4662696769116583","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.20.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.20.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"e5f71a23ebad3728577e4dc7de73225d5ba1bd62","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.20.0.tgz","fileCount":153,"integrity":"sha512-J0WLJuz3MMjGApB29JBwTcB3nrmZFXJtDLMRBy38d32qIfztWz1jYLG8sQBI70gy9QuFOSsU6Y1kUcX40gC77w==","signatures":[{"sig":"MEQCIHWuNLIWNGTQAHON9S42XIzZ1CezIK6spQazKdViqRu9AiAMPh13910VSNU+UbyhRW66gSUGgMKAyinBo/pgqPqUog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1118398},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"db4c60e8c4a95ee91c12b214ee4073c05041b318","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.20.0_1786679822790_0.024153539562253412","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.21.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.21.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"7d1693b2498be94b836b189a5203a2b828df7495","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.21.0.tgz","fileCount":153,"integrity":"sha512-B05GCr5rsu0sGsHTKGMQExtr3DFxKF6q0P3jmuqldboYD2TtY1kuFJtN/jX2qpfkkupOiHiD58dillKn5CCTww==","signatures":[{"sig":"MEUCIQDNngfIK1/p+qLOMqaH29WuLmfPhuzH7ik8uuj+VMTXWwIgBOjDOl+nK21xW4k/jBjeL0Jqf6iUtRmYSYA3S8KJT5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1123848},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"d991c098b554797de5542449643b531365f25593","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.21.0_1787408467339_0.4488226220189977","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"@anhnguyen0905/codex-mcp","version":"0.21.1","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.21.1","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"21fc086df83a31feaa44effda84066cfd401fe19","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.21.1.tgz","fileCount":153,"integrity":"sha512-1elNKjvWBAh6nSuTmGO7QHFP1rtw8/fn+p/6p3HIYd7OqAAtfGV3WkmTLkJ2gS+ZCc03wKZ05B4NwE2wpryoiw==","signatures":[{"sig":"MEUCIQCtIgG+XwWAbN6A+Uy9rL/ZKzaysUqtCfQCrI1sZ2nhPAIgNEhb2vkdVSpxYTzPRpMU1oFjyKkj9CWJrM/wsbpZt8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1125662},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"415cef7cbc48faca175107454c7b9c05e49895b9","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.21.1_1787412162431_0.9284910525327774","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.22.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.22.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"69c33f88d6935b6290c83bc79a21044327a41886","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.22.0.tgz","fileCount":156,"integrity":"sha512-RilIrIcxqjDS04OABuIGPv2/oUTJNLhkDU1n5i74oJIf7d1Md9S0TZU+K1F01h8SL3q1USrZGTWAVBQQJ35fqA==","signatures":[{"sig":"MEYCIQDJGSjZzOZtrJQ721cTONzxI5lx9go9CW1xDnekiE1uUwIhAL3UwpkhhbatvOy5kH2jq1XaHCVkKqlVESUEzwiy5LLr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1157046},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"bf32ac1209def5bf9abce7b6c6d4395a7b57f89f","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.22.0_1788363696824_0.37350464894478086","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.23.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.23.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"63bf7863f042efa8bd469a4ad7ed25c6957981cc","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.23.0.tgz","fileCount":159,"integrity":"sha512-9/a9rpJ864Tk2gsiupiNdUraiV3FkI6Ie7Cnq+8jVuiJfhqjt3FLCy63lCa8aZlDHYl/YRBQKr5tU8Hg5UmkcQ==","signatures":[{"sig":"MEQCICiCQ0uBgDej43dpvplHH+SrK6l1ChcZY3xliFAmJLacAiAhGIODhhqqQsqe+GwaKVXfnQDI9spwAtoE/fVXEdS9eQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1170698},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"2f96cc58f15ee58df54a40ce3064d0d57ac8a288","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.23.0_1788365702855_0.8861669900257989","host":"s3://npm-registry-packages-npm-production"}},"0.23.1":{"name":"@anhnguyen0905/codex-mcp","version":"0.23.1","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.23.1","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"92d552f35f626e48f37f54ee954e6ba5ad8773cd","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.23.1.tgz","fileCount":159,"integrity":"sha512-7Yz93PdQvfi9RdRtVp8Nwxh3LOEkSUzBdI5LqDm+eiWJp3dSlVx8z1jsv709q7yGwMw0U42uqA5Q1d+cPn7uiQ==","signatures":[{"sig":"MEUCIQD70PAjaHnQEof7QfzaSavdD6dLW7q594kXJmGLFB+11wIgHUguAGPq/Ln1aRQKm0nFREC7g6LDhMYZ/Y9p5Yv6K1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.23.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1172017},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"519b8f351f88493bcf7113b5101f3a313ad922b5","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.23.1_1788366088537_0.11973112507645944","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.24.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.24.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"99b6dfa1a857d2b5535853d844ea6265513b7bfb","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.24.0.tgz","fileCount":160,"integrity":"sha512-1Hc4HYl9mS2KQ52GnkCTiY82FrsuQc8TGQwlWSlcL2/SyaY+S+SAAaGjxQpRLoRpdjCGO5sMHRWLlrNwxExwJg==","signatures":[{"sig":"MEYCIQDxxIShKCaRcq+K/TFwNaTQwxUbzVQoxhfdtHKPjf04EQIhAJEcZ3bZyunW7omC7Zba2exnQ5ORCQgbq/amRxZfCxY0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1201291},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"6247a74b1b8c9a4f1b2349efff0a16abf1877f7b","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.24.0_1788370817074_0.856069005994236","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.25.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.25.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"9963a583e69983fd48c2e2907a4ce59a9235c6ef","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.25.0.tgz","fileCount":167,"integrity":"sha512-eXniQNRIrm7XICkstkqhChUgjW7H477IFmubM1K001N9bxvtRTMb9J/fp/OntK6ovtBI8G29Yy2irhFJlACCdQ==","signatures":[{"sig":"MEUCIQC00Q9RW40cxScBfxa9gr+6WllE6JOaaQp14gok8AA2qwIgPpJ7H+gSMMsKJ5mQf+aifBpoJ/yLFBENMqb4cjwOEEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1278639},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"c93013c3efc23418b087ef41c37379d086e2e00b","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.25.0_1788893276225_0.824876032495599","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.26.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.26.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"99aebf9a171b42d1d10b318fb5dc84513fe1bd60","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.26.0.tgz","fileCount":180,"integrity":"sha512-rdBAZMckZhS2S6NSEHL38qPX6WBwoawwSR12MwP6BPJgpkEKUzn69tF+QSdaYB/2azsIIL+NNMQgh55y48MVwQ==","signatures":[{"sig":"MEQCIBv+Meowk6njVAC92gIzVHkzv43P5CPcCagVexj5cTW5AiAb82Ui88sccoVFwg0IuwyRhpvofefh97tR+SFTzcZVoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1397114},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"efe3514b52eaf357a339562df5f47d7a1a2caf58","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.26.0_1788944885050_0.5211440426030038","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@anhnguyen0905/codex-mcp","version":"0.27.0","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"author":{"name":"anhnguyen0905"},"license":"MIT","_id":"@anhnguyen0905/codex-mcp@0.27.0","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"bin":{"codex-mcp":"dist/index.js"},"dist":{"shasum":"317e029470056208b4c8470690387f3e29ca11cf","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.27.0.tgz","fileCount":183,"integrity":"sha512-8/rS3VYYtSLxuIn1bvPvuUO3L7+yUvJivBU14BtLXJwdeulkNRwdFk3CeeLKD6tI2iX6rV7vDyKx6YjcGKkS4g==","signatures":[{"sig":"MEUCIQDGScZOf2ILgyhT0otM6jl/7cdVAOAWhedlRRMpO7rG5AIgIaQyffdeQ11i0CG4voaLmIaIFl6IaBWO9zwijktTayk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1428650},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"160e209183a8a815bccd438e1b3aaade7c3da7e5","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/codex-mcp_0.27.0_1789035048931_0.6793079196501755","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"_id":"@anhnguyen0905/codex-mcp@0.28.0","bin":{"codex-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"dist":{"shasum":"c2897074c759b1b2533167bf0d89845735b936b5","tarball":"https://registry.npmjs.org/@anhnguyen0905/codex-mcp/-/codex-mcp-0.28.0.tgz","fileCount":184,"integrity":"sha512-Rz8j/GTQBZw3gCZsfQ0mdcTKE9tbhO2bYXEP4fEAjlsBc199ZKxVv+JCSefYVwPAeY89RB8rEjGd0TJbaRKEpg==","signatures":[{"sig":"MEUCIQDVj2l7agWBdu93Wmi8WLogsDMb5bSY5n7NtnNZPEqdAgIgI/8x4nrkND3V7QykQQ1ReMtuhD4OzYUGW3ManvmXSV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGsU3j09xoKPVedena2DKabIIvr00yaZAeVB/3Pz+3gsAiEA6mn3bLgqdDPx6ftqBukmr4h/qA6bd0yoZXj5gID/GFs="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anhnguyen0905%2fcodex-mcp@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1439212},"main":"dist/index.js","name":"@anhnguyen0905/codex-mcp","type":"module","types":"./dist/index.d.ts","author":{"name":"anhnguyen0905"},"engines":{"node":">=20"},"gitHead":"ee857673f6f30ddf1e0ad86e06caf91547e3960f","license":"MIT","scripts":{"test":"vitest run","build":"tsc","start":"node dist/index.js","waves":"node scripts/task-waves.mjs","doctor":"node scripts/doctor.mjs","prepare":"npm run build","coverage":"vitest run --coverage","test:e2e":"node scripts/smoke-e2e.mjs","skills:eval":"node scripts/skill-eval.mjs --report docs/skill-selection-eval-report.md --negatives tests/fixtures/NEGATIVES.md","skills:sync":"node scripts/sync-awesome-skills.mjs --clone","skills:index":"node scripts/build-skills-index.mjs","skills:eval:scope":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-500.json --negatives tests/fixtures/NEGATIVES.md","skills:eval:scope100":"node scripts/skill-eval.mjs --scenarios tests/fixtures/scenarios-100.json --negatives tests/fixtures/NEGATIVES.md"},"version":"0.28.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ff81843e-c0c4-45d6-9371-fd932319dcf7"}},"homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","directories":{"test":"tests"},"maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.1","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codex-mcp_0.28.0_1789978401077_0.6224775743599196"}}},"time":{"created":"2026-07-10T16:15:23.617Z","modified":"2026-09-21T08:13:21.481Z","0.3.0":"2026-07-10T16:15:23.935Z","0.3.2":"2026-07-10T17:27:11.716Z","0.15.1":"2026-07-27T10:44:51.992Z","0.16.0":"2026-07-29T17:12:00.928Z","0.17.0":"2026-07-31T16:58:37.132Z","0.18.0":"2026-08-04T15:52:42.516Z","0.19.0":"2026-08-07T09:22:27.145Z","0.19.1":"2026-08-07T15:57:55.126Z","0.20.0":"2026-08-14T03:57:03.015Z","0.21.0":"2026-08-22T14:21:07.485Z","0.21.1":"2026-08-22T15:22:42.555Z","0.22.0":"2026-09-02T15:41:36.968Z","0.23.0":"2026-09-02T16:15:03.056Z","0.23.1":"2026-09-02T16:21:28.711Z","0.24.0":"2026-09-02T17:40:17.233Z","0.25.0":"2026-09-08T18:47:56.390Z","0.26.0":"2026-09-09T09:08:05.211Z","0.27.0":"2026-09-10T10:10:49.089Z","0.28.0":"2026-09-21T08:13:21.177Z"},"bugs":{"url":"https://github.com/anhnguyen0905/codex-mcp/issues"},"author":{"name":"anhnguyen0905"},"license":"MIT","homepage":"https://github.com/anhnguyen0905/codex-mcp#readme","keywords":["mcp","model-context-protocol","codex","claude-code","openai-codex","ai-agents","code-review"],"repository":{"url":"git+https://github.com/anhnguyen0905/codex-mcp.git","type":"git"},"description":"MCP server bridging Claude Code and OpenAI Codex CLI for plan-execute-review workflows","maintainers":[{"name":"anhnguyen0905","email":"anhnguyen25391@gmail.com"}],"readme":"<div align=\"center\">\n\n# codex-mcp\n\n**Plan with Claude · Execute with OpenAI Codex · Review with Claude**\n\nA Claude Code plugin and MCP server that runs a disciplined **plan → execute → review** loop:\nClaude interviews you and designs the plan, Codex writes the code, then Claude reviews each task\nand the final pass alongside a required Codex `codex_review`; findings are compared, fixes go back,\nand non-blocking improvements wait for your decision — all from a single command.\n\n[![CI](https://github.com/anhnguyen0905/codex-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/anhnguyen0905/codex-mcp/actions/workflows/ci.yml)\n&nbsp;·&nbsp; macOS · Windows · Linux &nbsp;·&nbsp; Node ≥ 20 &nbsp;·&nbsp; MIT\n\n</div>\n\n---\n\n## Quick start\n\n**1. Prerequisites** — Node ≥ 20 and the Codex CLI, authenticated:\n\n```bash\nnpm i -g @openai/codex\ncodex login          # ChatGPT Plus/Pro/Team — or set OPENAI_API_KEY\n```\n\n**2. Install the plugin** (bundles the `/codex-flow` command, ~60 skills, and the `codex` MCP server):\n\n```\n/plugin marketplace add anhnguyen0905/codex-mcp\n/plugin install codex-flow@codex-mcp\n```\n\nOnce listed in the Claude community directory, this also works:\n`claude plugin marketplace add anthropics/claude-plugins-community` then\n`claude plugin install codex-flow@claude-community`.\n\n**3. Run it** in any project:\n\n```\n/codex-flow implement a dark-mode toggle on the settings page\n```\n\n<details>\n<summary>Alternative: install the MCP server standalone (no plugin)</summary>\n\n```bash\n# from npm (recommended — ships a prebuilt dist, nothing to compile)\nclaude mcp add --scope user codex -- npx -y @anhnguyen0905/codex-mcp\n# or straight from this repo, which builds from source on first run\nclaude mcp add --scope user codex -- npx -y github:anhnguyen0905/codex-mcp\n```\n\n`claude mcp list` should then show `codex … ✔ Connected`. Copy\n[`commands/codex-flow.md`](commands/codex-flow.md) to `~/.claude/commands/` for the workflow\ncommand, or just use the plugin install above which bundles both.\n</details>\n\n### Optional: flint-chart-mcp\n\ncodex-flow routes chart and graph tasks to flint-chart (Microsoft Research) via the\n`codex-flow:exec-visualization` skill, rendering polished PNG/SVG charts instead of using ad-hoc\nPython plotting.\n\nRegister the server with the Codex CLI in `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.flint-chart]\ncommand = \"npx\"\nargs = [\"-y\", \"flint-chart-mcp\"]\n```\n\nRegister it with Claude:\n\n```bash\nclaude mcp add flint-chart -- npx -y flint-chart-mcp\n```\n\nThis setup is optional; when the server is not present, the `exec-visualization` skill degrades to\na fallback.\n\n<details>\n<summary>Troubleshooting: <code>Failed to reconnect to Plugin:codex-flow:codex: -32000</code></summary>\n\nThe plugin is distributed as a git clone and `dist/` is gitignored, so up to v0.14.0 a freshly\ninstalled plugin had no build and its `node dist/index.js` launcher exited immediately.\n\nSince v0.15.1 the bundled `.mcp.json` runs the published npm tarball\n(`npx -y @anhnguyen0905/codex-mcp@<version>`), which ships a prebuilt `dist/` — nothing is compiled\nat install time. Updating the plugin is the fix:\n\n```\n/plugin update codex-flow@codex-mcp\n```\n\nIf you are pinned to an older version, patch that install once instead:\n\n```bash\ncd ~/.claude/plugins/cache/codex-mcp/codex-flow/<version>\nnpm install --no-audit --no-fund && npm run build\n```\n\nThen restart Claude Code and confirm with `claude mcp list` (or call `codex_health`).\n</details>\n\n---\n\n## How it works\n\n```\nClaude Code ──(MCP stdio)──▶ codex-mcp ──spawns──▶ codex exec --json\n```\n\n`/codex-flow` runs six phases, keeping Claude as the planner/reviewer and Codex as the implementer:\n\n| Phase | Owner | What happens |\n|-------|-------|--------------|\n| **0 · Preflight** | Claude | Verify Codex login; baseline git + tests; resume an interrupted run. |\n| **1 · Interview** | Claude | Clarify requirements until every acceptance criterion is verifiable. |\n| **2 · Plan** | Claude | Explore the codebase, select relevant skills, write `.codex-flow/PLAN.md`. |\n| **3 · Backlog** | Claude | Decompose into dependency-ordered tasks in `.codex-flow/TASKS.md`. |\n| **4 · Execute** | Codex | Implement one task at a time — or several in parallel (see below). |\n| **5 · Review** | Claude + Codex | Dual-review each task and the final pass via Claude + required `codex_review`; compare findings, loop fixes back, and collect non-blocking improvements for a user decision gate. |\n\nThe bundled `session-report` skill writes a per-session bundle to `.codex-flow/reports/<YYYYMMDD-HHMMSS>/` with planning, allocation, task, cost, and summary reports plus explicit `claude` / `codex` / `both` PIC attribution.\n\nThe server spawns `codex exec` non-interactively, parses its JSONL event stream, and returns a\nstructured result (`sessionId`, `agentMessage`, `fileChanges`, `commands`, token `usage`, `diff`).\n\n---\n\n## `/codex-flow:brainstorm` — decide before you build (PDCA debate)\n\nNot every task should end in code. `/codex-flow:brainstorm <question>` runs a short\nPlan → Do → Check → Act loop whose deliverable is a decision record, produced by two-way debate\nbetween Claude (Fable, holds the thesis) and Codex (Astra, independent critic):\n\n| Phase | Who | What happens |\n|-------|-----|--------------|\n| **Plan** | Claude | One `codex_health` call, ≤ 3 framing questions, `BRIEF.md` (weighted criteria, git provenance), a THESIS with 2–3 options and its own strongest objections. |\n| **Do** | Codex ⇄ Claude | 1–3 rounds. Each Astra turn is a **fresh read-only** `codex_execute` that returns numbered challenges (BLOCKER/MAJOR/MINOR) and at most one alternative; Claude answers each with ACCEPT / REBUT / REFINE plus evidence. Stops on convergence or at the cap. |\n| **Check** | Claude, then Codex | Ledger + weighted score table, a fresh-session Codex sign-off for misattributions and dissent, and a mechanical `git status` check proving no code was written. |\n| **Act** | Claude + user | `DECISION.md` (`PROPOSED` → accept / amend / reject / one more round) with a `## Handoff` block a later `/codex-flow` run starts from, plus one `brainstorm.log` line that sizes future round caps. |\n\nAstra's json is parsed fail-closed by `scripts/debate-parse.mjs`; malformed entries are dropped\nwith reasons and re-obtained once, never reconstructed from prose. When Codex is unavailable the\nuser chooses, once per outage, between fixing it and a clearly labelled single-model run. All\nartifacts live in `.codex-flow/brainstorm/<timestamp>/`; the full flow's control files are never\ntouched.\n\n\n## Highlights\n\n### Index-based skill selection\n\nInstead of blind-loading whole skill collections, `/codex-flow` selects only the skills a task\nneeds from a **local index**: it classifies the request's role facets (engineering, data,\nmarketing, growth, research, design…) and loads every relevant skill that fits a context budget\n(~3% of the window), embedding distilled rule blocks into the Codex prompts. Skills on disk cost\nzero context until selected; third-party skills are vetted once before first use.\n\nThe index covers `~/.claude/skills`, `~/claude-skill-library`, **and the `skills/` dir of every\ninstalled plugin** (newest version per plugin) — so selection knows about skills the machine\nalready has instead of reporting a gap. And a domain facet never ends with zero skills: when\nnothing indexed fits, Step 7 re-indexes, vets, searches (`gh`/catalog/web), and — failing all of\nthat — **authors the missing `SKILL.md` before execution**, so the library grows toward the work.\n\n```bash\nnode scripts/sync-awesome-skills.mjs --clone   # build a local library from awesome-claude-skills\nnode scripts/build-skills-index.mjs            # → ~/.claude/skill-library/INDEX.md\n```\n\nBesides the phase skills, the plugin ships 17 domain skills authored through Step 7 — paid media,\nunit economics, media planning, warehouse modeling, event taxonomy, attribution, causal inference,\nsurvey design, ASO, localisation, OKRs, creative briefs, influencer strategy, SOPs and data-quality\nchecks, and agent context persistence — so they are indexed and selectable out of the box. Their\nnumeric thresholds are labelled *derived, unverified*: replace them with your own account history\nbefore treating any of them as a target.\n\nVerified by a 32-scenario scope eval (`npm run skills:eval`) — latest **32/32** — plus a\n100-request non-engineering scope run (data analysis, marketing planning, performance marketing,\nmarket research, content, product): **99/100** covered by an existing skill, at precision@1 84/99,\nwith the remaining case queued for Step 7 acquisition/authoring. Full procedure:\n[`skills/skill-selection/SKILL.md`](skills/skill-selection/SKILL.md).\n\n### Context persistence on large projects\n\n`scripts/context-slice.mjs` generates budgeted derived slices from `.codex-flow/PLAN.md` and\n`.codex-flow/TASKS.md`: per-task `.codex-flow/CONTEXT-T<n>.md` files (≤ **4000 estimated tokens**\nusing the chars/4 heuristic) and `.codex-flow/RESUME.md` on resume (≤ **8000 estimated tokens**\nusing the chars/4 heuristic). Decision-log blocks carry a git-SHA `Anchor:`, and slices stamp each\nblock `[fresh]` or `[verify]`; anything unverifiable — including a missing or invalid anchor or a\ngit failure — degrades to `[verify]`.\n\n`scripts/project-context.mjs` writes `.codex-flow/PROJECT.md`, the durable project brief Codex\nreads on every task: `--generate` derives it from the repo (what it is, users, layout, constraints,\nquality mechanisms, known limitations, direction) and `--refresh` regenerates the generated parts\nwhile preserving any `<!-- owner-notes -->` blocks the team added. `/codex-flow` Phase 0 generates it\non a fresh run when it is absent and has the user confirm or edit it in the interview; Phase 2 reads\nit before exploring; Phase 5 proposes a `--refresh` (with the diff shown for confirmation) when a\nDecision-log block records a contract deviation or an architecture change. It is a tracked project\nfile, not run state — committed with the run, never archived with it — and slices carry it as a\n`## Project context` item capped at 600 tokens.\n\nMandatory task text and task statuses are never dropped. Lower-priority content is dropped whole\nwhen necessary, with a restorable\n`(+N lower-priority items omitted — read .codex-flow/PLAN.md …)` pointer. Full\n`.codex-flow/PLAN.md` remains the on-disk source of truth. The slice helper is required: when it is\nmissing or exits non-zero the flow stops and asks for a plugin reinstall instead of degrading.\n\n### Run-state & requirements fidelity\n\n- `.codex-flow/REQUIREMENTS.md` records confirmed acceptance criteria verbatim with atomic\n  `R<n>.<m>` IDs. Mid-run changes append confirmed `ADDED`/`MODIFIED`/`REMOVED` Deltas instead of\n  rewriting history, and reset affected downstream approvals.\n- `.codex-flow/STATE.md` is the resume authority instead of file existence. Its 10-key run state\n  tracks the phase, three approvals, immutable `runBaselineRef` / known-red / dirty-baseline values,\n  checkpoint choice, execution mode, and a separate `resumeHead`.\n- `scripts/requirements-coverage.mjs` rejects uncited or unknown criterion IDs at the Phase 3 gate;\n  final review then walks every ID and records met/not-met with evidence.\n- TASKS.md records session lineage and an append-only status-transition log. Resume reconciles\n  orphaned in-progress work, while wave scheduling seeds dependencies from done tasks, waits on\n  in-progress tasks, and blocks dependents of failed or unknown states.\n- In parallel mode, one coordinator writes `.codex-flow/*`; workers return structured handoffs with\n  touched files, checks, findings, decision-log proposals, and session IDs.\n- Context slices always carry a stamped contracts index, compact known-red failures, and rank\n  decision blocks by explicit `Applies to:` scope before recency; the execution prompt carries the\n  run-position recitation header.\n\n### Parallel execution for large backlogs\n\ncodex-mcp serializes runs per workspace but parallelizes across workspaces, so independent tasks\ncan run **concurrently** — each in its own git worktree driven by a Claude subagent, then merged\nand integration-reviewed per wave.\n\n```bash\nnpm run waves                                  # compute execution waves from .codex-flow/TASKS.md\n```\n\nWaves batch tasks whose dependencies are met and whose files are disjoint, capped at **10\nconcurrent subagents** (`--max <n>` to lower). Parallel is the default when `task-waves` reports\nwidth > 1: waves of ≤3 run automatically, while wider waves ask first; parallel execution costs\nN× simultaneous quota. Playbook:\n[`skills/parallel-execution/SKILL.md`](skills/parallel-execution/SKILL.md).\n\n---\n\n## Tools\n\n| Tool | Purpose |\n|------|---------|\n| `codex_execute` | Start a new Codex session executing a task/plan |\n| `codex_continue` | Resume a session with follow-up (e.g. review feedback) |\n| `codex_review` | Read-only review of uncommitted workspace changes |\n| `codex_batch` | Run up to 50 tasks in parallel across distinct workspaces (worktrees) |\n| `codex_sessions` | List prior Codex sessions (from `~/.codex/sessions/`), filterable by cwd |\n| `codex_metrics` | Aggregate token/duration/failure metrics from the local run log |\n| `codex_health` | Check Codex CLI version and login status |\n\n`codex_execute` / `codex_continue` / `codex_review` accept `writeNotes: true` to persist a markdown\nsummary of the run to `<cwd>/.codex-flow/notes/<sessionId>.md`.\n\nWhen Codex is not logged in or unreachable, `/codex-flow` no longer stops dead: it offers an\nexplicit **Executor fallback** (fix Codex and re-check, or let Claude execute the backlog under the\nsame plan/review contract, with an independent subagent review replacing `codex_review`). The choice\nis recorded in `.codex-flow/STATE.md` as `executor:` and is never made silently or mid-task.\n\nEvery `codex_execute` / `codex_continue` / `codex_review` payload carries `accepted: boolean`, a\nfail-closed delivery verdict: `status === \"success\"` AND the acceptance evidence holds — the\n`verifyCommand` passed (when given), or for `codex_review` the findings block parsed. It never\nchanges `status`/`isError`; read it before trusting `agentMessage`. `codex_review` is never\nauto-resumed: a timed-out or partial review is reported after one attempt.\n\n`codex_review` asks Codex to end its message with one fenced json block and returns it parsed\nfail-closed as `reviewFindings: { parsed, findings[], improvements[], dropped, droppedReasons,\nparseError? }` (severity is one of CRITICAL/HIGH/MEDIUM/LOW; malformed entries are counted in\n`dropped`, never coerced). `droppedReasons: string[]` carries one entry per dropped item, naming the\nfield that failed validation (for example `findings[0].line`, or the bare locator `findings[0]` when\nthe whole entry is invalid), so `dropped` is always `droppedReasons.length`. Any `dropped > 0` makes\n`accepted` false for `codex_review` — a review that lost an entry is never treated as delivered. The\nprose `agentMessage` is still returned for the `parsed: false` case.\n\n`codex_execute` / `codex_continue` accept `verifyCommand` (plus optional `verifyTimeoutMs`, default\n10 min, cap 30): after the Codex run settles, the server runs that acceptance command in `cwd`\n(still inside the workspace lock) and returns `verification: { command, exitCode, timedOut,\ndurationMs, outputTail, passed, skipped? }`. This is deterministic evidence that the acceptance\ncheck ran — independent of Codex's own claim. It is skipped (`skipped: \"run-failed\"`) when the run\nitself failed or aborted, and it never changes the run's `status`/`isError`. Termination is bounded\n(SIGTERM → tree SIGKILL → forced settle) so a hung check can never hold the workspace lock. The\ncommand runs with the server's environment, and its output tail passes through the same redaction\npass as every other returned text — treat it with the same trust as Codex's own output.\n\n`codex_execute` / `codex_continue` / `codex_review` and each `codex_batch` task accept\n`reasoningEffort: minimal | low | medium | high | xhigh`, passed to Codex as\n`-c model_reasoning_effort=\"<value>\"`.\n\n**Secret redaction.** Every returned or persisted text — `agentMessage`, `stderr`, `errors`,\n`verification.outputTail`, live-progress notifications, the raw JSONL live log, and `writeNotes`\nrun notes — is redacted before it leaves the server: each known secret shape (OpenAI/GitHub/AWS/\nSlack/Google keys, bearer tokens, JWTs, PEM private keys, `SECRET`/`TOKEN`/`KEY`-style env\nassignments) is replaced by `[REDACTED:<kind>]`. `codex_execute` / `codex_continue` / `codex_review`\nreport `redactions: <n>` (and each `codex_batch` task result its own `redactions`, with\n`redactionsTotal` on the batch payload) whenever the count is above zero; the fields are omitted at\nzero. Redaction is idempotent and never changes `status`, `isError`, `accepted`, or a\n`verification.passed` verdict.\n\n**Auth mode & the model guard.** `codex_health` always returns\n`authMode: \"chatgpt\" | \"apikey\" | \"unknown\"`, derived from the Codex CLI login output. Under\nChatGPT auth a `model` override is refused before anything is spawned — `codex_execute` /\n`codex_continue` / `codex_review` return an error and a `codex_batch` task fails with\n`model override is not allowed under ChatGPT auth; steer with reasoningEffort` — because the\nChatGPT-auth backend rejects arbitrary model ids. So pass `model` only when `authMode` is\n`apikey`; otherwise omit it and steer with `reasoningEffort`. `/codex-flow` Phase 4 follows the same\nrule, and a flowDocs guard checks that wording.\n\n**Review scope.** `codex_review` accepts `scope: { files: string[]; contract?: string }` (files\nnon-empty, up to 200 entries; contract up to 4000 chars). The server appends the contract and the\nfile list to the reviewer prompt and stamps every parsed finding with `inScope: boolean`, plus\n`reviewFindings.outOfScopeCount` for the findings outside the declared files. Out-of-scope findings\nare non-blocking by default — `/codex-flow` routes them to the improvements ledger and blocks only\nwhen the reviewer verifies they affect the task's acceptance.\n\n**Metrics history & completeness.** `codex_metrics` accepts `includeHistory: true` to aggregate the\narchived `history/*.jsonl` back-files alongside the live and rotated log (default `false`, with\n`historyFiles` / `historyExcluded` reported when archives exist). Every aggregate carries\n`completeness: { complete, unpricedRuns, missingUsage, readErrors, historyExcluded }` so an\nincomplete roll-up is visible instead of silent. Note that the shipped `COST_TABLE` is empty and\n`CODEX_MCP_PRICING` does not fill it, so any run that reported usage counts as unpriced:\n`completeness.complete` is never `true` for usage-bearing entries in this release.\n\nSandbox modes: `read-only`, `workspace-write` (default), `danger-full-access`. Default execution\ntimeout is 60 min (`timeoutMs` caps at 2 h). Runs into the same `cwd` are serialized; different\nworkspaces run in parallel.\n\nBy default, the server automatically resumes the same session after a transient turn failure\n(at most 2 resumes), timeout (at most 1), or `partial` result caused by a missing completion marker\nor parse errors (at most 1, reported as `no-completion-marker`), with 2 s then 8 s backoff (8 s\nfor any later resume). Set `CODEX_MCP_AUTO_RESUME=0` to opt out.\n\n<details>\n<summary>Result payload &amp; live progress</summary>\n\nEvery run tool returns `sessionId`, `agentMessage`, `fileChanges`, `commands`, token `usage`,\n`errors`, plus:\n\n- **`diff`** — `git status --porcelain` + `git diff HEAD` after the run (64 KB cap, `truncated`\n  flag; `null` outside a git repo) so the caller can review without re-reading files.\n- **`aborted`** — `true` when cancelled from the client (Esc in Claude Code); the server forwards\n  cancellation to Codex (SIGTERM → SIGKILL after 5 s).\n- **`attempts` / `resumeReasons`** — total attempts and the ordered reasons for automatic resumes;\n  each `codex_batch` task result carries the same fields.\n- **`liveLog`** — path to the raw JSONL event log when the live terminal view is enabled.\n\nClients that send an MCP `progressToken` (Claude Code does) get `notifications/progress` for every\nmeaningful Codex event. Set `terminal: true` (or `CODEX_MCP_TERMINAL=1`) to also open a live-tailing\nwindow — Terminal.app on macOS, PowerShell on Windows, the first available emulator on Linux. On\nmacOS, the window closes itself about 4 seconds after a successful run; it stays open after a failed\nor interrupted run. The delay defaults to 4000 ms; `0` closes immediately, and values above `60000`\nare clamped. Windows and Linux windows already close with their process. If no window can open, the\nrun still succeeds; follow the `liveLog` or the in-session progress instead.\n</details>\n\n---\n\n## Configuration\n\n| Variable | Effect |\n|----------|--------|\n| `OPENAI_API_KEY` | Auth for Codex CLI (alternative to `codex login`). |\n| `CODEX_BIN` | Override the Codex binary path/name (e.g. `C:\\tools\\codex.exe`). |\n| `CODEX_MCP_TERMINAL=1` | Open the live-progress window by default. |\n| `CODEX_MCP_TERMINAL_KEEP_OPEN=1` | Never auto-close the live-progress window (the value must be exactly `1`). |\n| `CODEX_MCP_TERMINAL_CLOSE_DELAY_MS` | Set the close delay in ms; negative, non-integer, or unparseable input uses `4000`. |\n| `CODEX_MCP_AUTO_RESUME=0` | Disable bounded server-side session auto-resume. |\n| `CODEX_FLOW_SKILLS_INDEX` | Override the skill index path. |\n| `MCP_TOOL_TIMEOUT` | Raise Claude Code's MCP tool timeout (ms) for long runs. |\n\n## Security & privacy\n\n- **No credentials handled.** The server never reads, stores, or transmits your credentials — auth\n  is handled entirely by the Codex CLI (`~/.codex/`). Run `npm run doctor` to verify your setup.\n- **No network calls of its own.** The MCP server only spawns the local `codex` CLI (and `git` for\n  diffs). All model traffic is Codex's, under your OpenAI account and its data policies.\n- **Local-only telemetry.** Run metrics (tokens, durations, exit codes, a 200-char error head) are\n  appended to `~/.codex-mcp/metrics.jsonl` on your machine and never uploaded. Live-progress logs\n  and run notes stay under the project's gitignored `.codex-flow/`.\n- **Sandboxed writes.** Codex runs in `workspace-write` by default; `codex_review` is always\n  `read-only`; `danger-full-access` is never used unless a task explicitly needs it and the user is\n  told first. Per-cwd locks serialize runs into the same workspace.\n- **Caller-defined commands.** `verifyCommand` runs the acceptance command you pass, in your\n  workspace, with the server's environment; its output tail is redacted like every other returned\n  text, but treat it with the same trust as any other shell output. Third-party skills are loaded only after a content-pinned vet\n  (`skill-selection`).\n- Report vulnerabilities per [SECURITY.md](SECURITY.md).\n\n---\n\n## Development\n\n```bash\nnpm test          # unit tests (vitest)\nnpm run coverage  # enforces 80% thresholds\nnpm run build     # tsc → dist/\nnpm run test:e2e  # real end-to-end smoke test (spawns Codex, uses quota)\n```\n\n<details>\n<summary>Source layout</summary>\n\n**Server** (`src/`): `index.ts` (stdio entry) · `server.ts` (MCP tools, cwd lock, cancellation) ·\n`argsBuilder.ts` (argv) · `codexRunner.ts` (spawn + timeout/kill) · `eventParser.ts` (JSONL →\nresult) · `workspaceDiff.ts` (git diff) · `terminal.ts` / `liveView.ts` / `progressFormatter.ts` /\n`progressNotifier.ts` (live progress).\n\n**Skill & workflow scripts** (`scripts/`): `sync-awesome-skills.mjs` · `build-skills-index.mjs` ·\n`skill-match.mjs` · `skill-eval.mjs` · `task-waves.mjs` · `session-cost.mjs` · `tail-progress.mjs`.\n</details>\n\n---\n\n<div align=\"center\">\n<sub>MIT · <a href=\"CHANGELOG.md\">Changelog</a></sub>\n</div>\n","readmeFilename":"README.md"}