affaan-m/ECC · error · Error
unsupported Codex version ${versionMatch[1]}; tool-less revi
Error message
unsupported Codex version ${versionMatch[1]}; tool-less review requires exactly ${SUPPORTED_CODEX_VERSION} What it means
Thrown by verifyToollessSupport() when the Codex version was parsed successfully but does not equal SUPPORTED_CODEX_VERSION (currently '0.146.0'). The review script pins an exact version because the tool-less safety contract depends on specific feature toggles and CLI behavior; even a minor version drift is treated as unsupported until verified. Both the detected and required versions are printed.
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 01e15490f0)
Solutions
- Install exactly the pinned version: `codex-cli 0.146.0` (use the project's documented install/pin step).
- If you intentionally upgraded, update SUPPORTED_CODEX_VERSION in the script after re-validating the feature set.
- Pin Codex in CI (e.g. a specific npm/brew version) so it does not drift.
Example fix
// before: installed 0.147.0 Error: unsupported Codex version 0.147.0; tool-less review requires exactly 0.146.0 // 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 = '0.146.0';
function assertSupportedVersion(detected) {
if (detected !== SUPPORTED_CODEX_VERSION) {
throw new Error(`unsupported Codex version ${detected}; requires exactly ${SUPPORTED_CODEX_VERSION}`);
}
return detected;
} Type guard
function isSupportedCodexVersion(detected, supported) {
return typeof detected === 'string' && detected === (supported || '0.146.0');
} Try / catch
try {
verifyToollessSupport({ spawnSync });
} catch (error) {
if (/^unsupported Codex version/.test(error.message)) {
// install the pinned version, then retry
} else {
throw error;
}
} Prevention
- Pin the Codex CLI to exactly the supported version in CI and local setup.
- Treat the version as an exact-match contract; do not assume newer is compatible.
- When intentionally upgrading, re-validate the feature set and bump SUPPORTED_CODEX_VERSION.
When it happens
Trigger: Having any Codex version other than 0.146.0 installed, e.g. 0.145.0, 0.147.0, or a newer release. The check is exact-equality, not a range.
Common situations: Auto-updated Codex CLI that moved past the pinned version; a team member on a different version; an older CI image with a stale Codex; downgrading/upgrade mid-stream.
Related errors
- Codex version could not be verified for tool-less review
- Codex CLI is not installed
- Codex ${label} probe failed${detail ? `: ${detail}` : ''}
- Codex ${versionMatch[1]} cannot guarantee tool-less review;
- Codex review failed${detail ? `: ${detail}` : ''}
AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13).
Data as JSON: /api/errors/2ef7d7c55c3fe985.
Report an issue: GitHub.