Fission-AI/OpenSpec · error

Invalid tool(s): ${invalidTokens.join(', ')}. Available valu

Error message

Invalid tool(s): ${invalidTokens.join(', ')}. Available values: ${availableList}

What it means

Error "Invalid tool(s): ${invalidTokens.join(', ')}. Available values: ${availableList}" thrown in Fission-AI/OpenSpec.

Source

Thrown at src/core/init.ts:749

      throw new Error(
        'The --tools option requires at least one tool ID when not using "all" or "none".'
      );
    }

    // Retired ids resolve to their current tool, so a rebrand does not break
    // an existing `--tools windsurf` in someone's setup script.
    const normalizedTokens = tokens.map((token) => resolveToolIdAlias(token.toLowerCase()));

    if (normalizedTokens.some((token) => token === 'all' || token === 'none')) {
      throw new Error('Cannot combine reserved values "all" or "none" with specific tool IDs.');
    }

    const invalidTokens = tokens.filter(
      (_token, index) => !availableSet.has(normalizedTokens[index])
    );

    if (invalidTokens.length > 0) {
      throw new Error(
        `Invalid tool(s): ${invalidTokens.join(', ')}. Available values: ${availableList}`
      );
    }

    // Deduplicate while preserving order
    const deduped: string[] = [];
    for (const token of normalizedTokens) {
      if (!deduped.includes(token)) {
        deduped.push(token);
      }
    }

    return deduped;
  }

  private validateTools(
    toolIds: string[],
    toolStates: Map<string, ToolSkillStatus>,

View on GitHub (pinned to 6926ccb18a)

When it happens

Trigger: Thrown at src/core/init.ts:749 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Fission-AI/OpenSpec@6926ccb18a (2026-08-25). Data as JSON: /api/errors/bace3e8dd51d94ef. Report an issue: GitHub.