{"record":{"id":"f4168af3a49ce2e4","repo":"Fission-AI/OpenSpec","slug":"the-tools-option-requires-at-least-one-tool-id-w","errorCode":null,"errorMessage":"The --tools option requires at least one tool ID when not using \"all\" or \"none\".","messagePattern":"The --tools option requires at least one tool ID when not using \"all\" or \"none\"\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/core/init.ts","lineNumber":731,"sourceCode":"    const availableSet = new Set(availableTools);\n    const availableList = ['all', 'none', ...availableTools].join(', ');\n\n    const lowerRaw = raw.toLowerCase();\n    if (lowerRaw === 'all') {\n      return availableTools;\n    }\n\n    if (lowerRaw === 'none') {\n      return [];\n    }\n\n    const tokens = raw\n      .split(',')\n      .map((token) => token.trim())\n      .filter((token) => token.length > 0);\n\n    if (tokens.length === 0) {\n      throw new Error(\n        'The --tools option requires at least one tool ID when not using \"all\" or \"none\".'\n      );\n    }\n\n    // Retired ids resolve to their current tool, so a rebrand does not break\n    // an existing `--tools windsurf` in someone's setup script.\n    const normalizedTokens = tokens.map((token) => resolveToolIdAlias(token.toLowerCase()));\n\n    if (normalizedTokens.some((token) => token === 'all' || token === 'none')) {\n      throw new Error('Cannot combine reserved values \"all\" or \"none\" with specific tool IDs.');\n    }\n\n    const invalidTokens = tokens.filter(\n      (_token, index) => !availableSet.has(normalizedTokens[index])\n    );\n\n    if (invalidTokens.length > 0) {\n      throw new Error(","sourceCodeStart":713,"sourceCodeEnd":749,"githubUrl":"https://github.com/Fission-AI/OpenSpec/blob/6926ccb18afa4ff621112813e9968334576ee11a/src/core/init.ts#L713-L749","documentation":"Error \"The --tools option requires at least one tool ID when not using \"all\" or \"none\".\" thrown in Fission-AI/OpenSpec.","triggerScenarios":"Thrown at src/core/init.ts:731 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6926ccb18afa4ff621112813e9968334576ee11a","analyzedAt":"2026-08-25T12:29:45.729Z","schemaVersion":2},"datasetVersion":"2026-08-25T16:17:27.014Z"}