affaan-m/ECC · error · Error
unsupported Codex version
Error message
unsupported Codex version ${versionMatch[1]}; tool-less review requires exactly ${SUPPORTED_CODEX_VERSION} What it means
The script pins Codex to exactly SUPPORTED_CODEX_VERSION ('0.146.0'). verifyToollessSupport() throws this error when `codex --version` reports any other version, because tool-less review behavior is only guaranteed for that exact release. The message includes the detected version and the required one.
Solutions
- Install the exact required version: `npm install -g @openai/codex@0.146.0`
- Check `which codex` / `codex --version` to make sure PATH resolves to the pinned install
- Pin the version in CI (e.g. install step with @0.146.0) to avoid drift
- If you intentionally want a different version, update SUPPORTED_CODEX_VERSION in review-with-codex.js after verifying tool-less behavior
Example fix
// before $ codex --version codex-cli 0.158.1 // newer than pin // after npm install -g @openai/codex@0.146.0 $ codex --version codex-cli 0.146.0
Defensive patterns
Strategy: validation
Validate before calling
const { SUPPORTED_CODEX_VERSION } = require('./review-with-codex');
const { execSync } = require('child_process');
function codexVersionMatches() {
const out = execSync('codex --version', { encoding: 'utf8' });
const m = out.match(/^codex-cli\s+([^\s]+)$/m);
return m != null && m[1] === SUPPORTED_CODEX_VERSION;
} Try / catch
try {
verifyToollessSupport();
} catch (err) {
const m = err.message.match(/unsupported Codex version (\S+);/);
if (m) {
console.error(`Install codex-cli 0.146.0 (found ${m[1]}): npm i -g @openai/codex@0.146.0`);
} else throw err;
} Prevention
- Pin @openai/codex@0.146.0 in package.json/CI install steps
- Disable auto-update for the global Codex install
- Check `which codex` when multiple installs exist
- Re-check the pin after intentional upgrades
When it happens
Trigger: verifyToollessSupport() called by runTests/runReview; `codex --version` outputs a parseable `codex-cli <version>` line where versionMatch[1] !== '0.146.0' — any older or newer installed Codex.
Common situations: Automatic global npm updates bumped codex past the pin; CI images ship a different Codex version; a developer has multiple Codex installs and PATH resolves to the wrong one.
Understand the failure class
Background: "is not a compatible type" / "cannot merge" errors: when a value's type doesn't match what the library requires — this error's family across 65 libraries.
Related errors
- Codex probe failed ` : ''}
- Codex returned no final response
- Codex version could not be verified for tool-less review
- Agents directory not found
- --all-harnesses and --harness are mutually exclusive.
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/2ef7d7c55c3fe985.
Report an issue: GitHub.
Appendix: source
Thrown at skills/council-multi-model/scripts/review-with-codex.js:145
}
function verifyToollessSupport(dependencies = {}) {
const spawn = dependencies.spawnSync || spawnSync;
const options = {
cwd: os.tmpdir(),
env: buildEnvironment(dependencies.env || process.env),
encoding: 'utf8',
timeout: 5_000,
maxBuffer: 256 * 1024,
windowsHide: true,
};
const versionText = probeCodex(spawn, ['--version'], options, 'version');
const versionMatch = versionText.match(/^codex-cli\s+([^\s]+)$/m);
if (!versionMatch) {
throw new Error('Codex version could not be verified for tool-less review');
}
if (versionMatch[1] !== SUPPORTED_CODEX_VERSION) {
throw new Error(
`unsupported Codex version ${versionMatch[1]}; `
+ `tool-less review requires exactly ${SUPPORTED_CODEX_VERSION}`
);
}
const featuresText = probeCodex(spawn, ['features', 'list'], options, 'feature');
const stages = new Map();
for (const line of featuresText.split('\n')) {
const match = line.trim().match(
/^(\S+)\s+(stable|under development|experimental|deprecated|removed)\s+(true|false)$/
);
if (match) stages.set(match[1], match[2]);
}
const unavailable = REQUIRED_TOOLLESS_FEATURES.filter(
(feature) => stages.get(feature) !== 'stable'
);
if (unavailable.length > 0) {
throw new Error(View on GitHub (pinned to 8321021c54)