affaan-m/ECC · error

SETUP_FAILED

SETUP_FAILED

Error message

${error.message}

What it means

printError is setup's last-resort error reporter: an error escaped the setup flow and its message is printed (or serialized for --json), with structured ClaudeSetupError payloads preserved when available.

Source

Thrown at scripts/setup.js:322

    return;
  }
  process.stdout.write(`\nECC ${result.action} ${result.pluginId} at ${result.scope} scope.\n`);
  if (result.sourceScope) {
    process.stdout.write(`Previous scope: ${result.sourceScope}\n`);
  }
  process.stdout.write(`Hook preference: ${result.hooks}\n`);
  if (result.restartRequired) {
    process.stdout.write('Restart Claude Code or run /reload-plugins to load the updated plugin.\n');
  }
}

function printError(error, json) {
  if (json) {
    const payload = error instanceof ClaudeSetupError
      ? error.toJSON()
      : {
        error: {
          code: 'SETUP_FAILED',
          message: error.message,
          phase: 'cli',
          observedScopes: [],
          recovery: [],
        },
      };
    process.stderr.write(`${JSON.stringify(payload, null, 2)}\n`);
    return;
  }
  process.stderr.write(`Error: ${error.message}\n`);
}

function isInteractiveCancellation(error) {
  return Boolean(error && (
    error.code === 'ABORT_ERR'
    || /aborted with ctrl\+d|readline was closed/i.test(error.message || '')
  ));
}

View on GitHub (pinned to 06c5e118c4)

Solutions

  1. Inspect the underlying error detail in the message (stderr/log/HTTP status), fix the cause, and retry.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Triggered when setup.js rejects the current invocation: <value>

Common situations: Occurs while running scripts/setup.js with invalid arguments, missing flags, or a failing external dependency; the guard at scripts/setup.js:322 aborts the command with this message.


AI-assisted analysis of affaan-m/ECC@06c5e118c4 (2026-08-18). Data as JSON: /api/errors/272c493e3ed8e9db. Report an issue: GitHub.