affaan-m/ECC · error
Unsupported Itô command "${command || "(missing)"}"; ECC per
Error message
Unsupported Itô command "${command || "(missing)"}"; ECC permits only login, logout, auth, find, status, and evals. What it means
Thrown by parseArgs at scripts/ito.js:165-168 when the first non---json argument is not one of the SUPPORTED_COMMANDS (login, logout, auth, find, status, evals). The bridge only forwards a fixed command allowlist to the canonical Itô CLI; anything else is rejected before any subprocess is started. If no command is present at all (argv empty after --json stripping), command is undefined and the message interpolates '(missing)'. Note: --help/-h/empty argv returns help at ito.js:143-148 and never reaches this check.
Source
Thrown at scripts/ito.js:166
return Object.freeze({ help: true, invocationArgs: [] });
}
if (environment.ECC_DRY_RUN === "1" || args.includes("--dry-run")) {
throw new Error(
"Itô compute has no paper or dry-run success mode. No CLI operation was invoked."
);
}
const jsonIndexes = args
.map((value, index) => (value === "--json" ? index : -1))
.filter((index) => index >= 0);
if (jsonIndexes.length > 1) {
throw new Error("--json may only be provided once");
}
const withoutJson = args.filter((value) => value !== "--json");
const command = withoutJson.shift();
if (!SUPPORTED_COMMANDS.includes(command)) {
throw new Error(
`Unsupported Itô command "${command || "(missing)"}"; ECC permits only login, logout, auth, find, status, and evals.`
);
}
if (command === "auth" && withoutJson.includes("--no-browser")) {
throw new Error("--no-browser is valid only for ecc ito login; auth is validation-only.");
}
if (command === "evals") {
validateNodeQualificationArgs(withoutJson, environment);
}
return Object.freeze({
help: false,
invocationArgs: Object.freeze([
...(jsonIndexes.length === 1 ? ["--json"] : []),
command,
...withoutJson,
]),
});View on GitHub (pinned to 01e15490f0)
Solutions
- Use one of the supported commands: login, logout, auth, find, status, evals (lowercase).
- Run `ecc ito --help` to see the canonical list for your installed version.
- If a flag was mistaken for the command (e.g. `ecc ito --no-browser`), put a supported command first: `ecc ito login --no-browser`.
Example fix
// before $ ecc ito Authenticate // after $ ecc ito auth
Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED = new Set(['login', 'logout', 'auth', 'find', 'status', 'evals']);
function assertSupportedCommand(cmd) {
if (!SUPPORTED.has(cmd)) {
throw new Error(`Unsupported ito command '${cmd}'. Supported: ${[...SUPPORTED].join(', ')}`);
}
return cmd;
} Type guard
function isItoCommand(value) {
return typeof value === 'string'
&& ['login', 'logout', 'auth', 'find', 'status', 'evals'].includes(value);
} Prevention
- Pull the supported-command list from the binary itself (`ecc ito --help`) when scripting.
- Lowercase the command in wrappers before passing it through.
- Pin ECC versions in CI to avoid surprise command-set changes.
When it happens
Trigger: `ecc ito foobar`; `ecc ito` (no command, no --help); `ecc ito --json` (only the flag); `ecc ito LIST` (case-sensitive — uppercase is rejected). The first token after stripping all --json occurrences is shifted out at ito.js:164 and tested.
Common situations: Typo in the subcommand (e.g. `ecc ito auths` instead of `auth`); copy/paste from docs that list a command not yet supported by the installed ECC version; CI job parameterized with an empty command variable that interpolates to nothing.
Related errors
- --config-dir must be an existing absolute directory.
- invalid qualification configuration
- --config-dir must exist and contain a regular sixtytwo.yaml
- --json may only be provided once
- --no-browser is valid only for ecc ito login; auth is valida
AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13).
Data as JSON: /api/errors/4ba91a9ff8cd4dc7.
Report an issue: GitHub.