affaan-m/ECC · error

Itô compute has no paper or dry-run success mode. No CLI ope

Error message

Itô compute has no paper or dry-run success mode. No CLI operation was invoked.

What it means

Thrown by parseArgs at scripts/ito.js:152 when ECC_DRY_RUN=1 is set in the environment OR --dry-run appears anywhere in the argv. The Itô bridge is a credential-bearing financial CLI that forwards to a real Itô client; there is intentionally no paper-trading or no-op success mode. The error exists to prevent a dry-run habit from silently masking the fact that no real operation ran — the operator would believe an RFQ or qualification happened when it did not.

Source

Thrown at scripts/ito.js:152

  } catch {
    throw new Error(
      "--config-dir must exist and contain a regular sixtytwo.yaml before any process is started."
    );
  }
}

function parseArgs(argv, environment = process.env) {
  const args = [...argv];
  if (
    args.length === 0
    || args.includes("--help")
    || args.includes("-h")
  ) {
    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")) {

View on GitHub (pinned to 01e15490f0)

Solutions

  1. Unset the env var for the ito invocation: `env -u ECC_DRY_RUN ecc ito status`.
  2. Remove --dry-run from the arguments; the ito bridge has no dry-run equivalent.
  3. If you genuinely need a non-mutating ito call, use `ecc ito auth` (validation-only) or `ecc ito status` (read-only) without --dry-run.
  4. Audit your shell rc / CI env for a global ECC_DRY_RUN export and scope it tightly.

Example fix

// before
$ ECC_DRY_RUN=1 ecc ito status
// after
$ ecc ito status
Defensive patterns

Strategy: validation

Validate before calling

function assertNoDryRun(env, argv) {
  if (env.ECC_DRY_RUN === '1' || argv.includes('--dry-run')) {
    throw new Error('Refusing to invoke ecc ito under dry-run; unset ECC_DRY_RUN and remove --dry-run.');
  }
}
// in the wrapper that invokes ecc ito
assertNoDryRun(process.env, process.argv.slice(2));

Prevention

When it happens

Trigger: Any of: `ECC_DRY_RUN=1 ecc ito login`; `ecc ito status --dry-run`; `ecc ito find <opts> --dry-run`. The check runs before command parsing, so even `ecc ito --dry-run` (no subcommand) trips it. It also fires before the --json and SUPPORTED_COMMANDS checks at ito.js:157-169.

Common situations: A shell that exports ECC_DRY_RUN=1 globally for testing other ECC subcommands, then the operator runs `ecc ito ...` in the same shell expecting real behavior. CI pipelines that set ECC_DRY_RUN for safe invocation of unrelated ECC tooling also trip this when reaching an ito step.

Related errors


AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13). Data as JSON: /api/errors/1fc68ae9d9dbb592. Report an issue: GitHub.