Fission-AI/OpenSpec · error · Error

OpenSpec update failed for: ${failedTools.map((tool) => tool

Error message

OpenSpec update failed for: ${failedTools.map((tool) => tool.name).join(', ')}

What it means

Error "OpenSpec update failed for: ${failedTools.map((tool) => tool.name).join(', ')}" thrown in Fission-AI/OpenSpec.

Source

Thrown at src/core/update.ts:504

    }

    console.log();
    const affectedToolIds = [...new Set([...newlyConfiguredTools, ...updatedToolIds])];
    const shouldRestartIde = affectedToolIds.some((toolId) => {
      const tool = AI_TOOLS.find((candidate) => candidate.value === toolId);
      return Boolean(
        tool?.requiresIdeRestart &&
        (
          shouldGenerateCommandsForTool(toolId, delivery) ||
          shouldGenerateSkillsForTool(toolId, delivery)
        )
      );
    });
    if (shouldRestartIde) {
      console.log(chalk.dim('Restart your IDE for changes to take effect.'));
    }
    if (failedTools.length > 0) {
      throw new Error(`OpenSpec update failed for: ${failedTools.map((tool) => tool.name).join(', ')}`);
    }
  }

  private async syncCopilotCloudFiles(projectPath: string, configuredTools: string[]): Promise<void> {
    try {
      if (includesGitHubCopilot(configuredTools)) {
        // Cloud files are opt-in (see cloud-agent.ts). `update` never prompts,
        // so it only refreshes files the user has already opted into (via
        // `openspec init` or a `githubCopilot.cloudAgent: true` config), or that
        // a pre-opt-in project already has. Opting in is a deliberate init/config
        // step, never a silent side effect of running update.
        if (await isCopilotCloudEnabled(projectPath)) {
          await writeCopilotCloudFiles(projectPath);
          const collisions = await findUnmanagedCloudFiles(projectPath);
          if (collisions.length > 0) {
            console.log(
              chalk.dim(
                `Left your existing ${collisions.join(' and ')} untouched — add the OpenSpec ` +

View on GitHub (pinned to 6926ccb18a)

When it happens

Trigger: Thrown at src/core/update.ts:504 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/31fca95692477db8. Report an issue: GitHub.