chenhg5/cc-connect · error

start task: %w

Error message

start task: %w

What it means

Install() on Windows wraps a failure of m.Start() after successfully creating a fresh scheduled task (createWindowsTask succeeded). It means the task was registered but Start-ScheduledTask (via startWindowsTask/runPowerShell) failed. The PowerShell error and its output are wrapped via %w.

Source

Thrown at daemon/windows.go:82

	if err := stopWindowsTask(); err != nil {
		slog.Warn("schtasks: stop existing task failed", "error", err)
	}
	if err := deleteWindowsTask(); err != nil {
		if windowsTaskMatchesAction(scriptPath) {
			if err := m.Start(); err != nil {
				return fmt.Errorf("start existing task: %w", err)
			}
			return nil
		}
		return err
	}

	if err := createWindowsTask(scriptPath); err != nil {
		return err
	}

	if err := m.Start(); err != nil {
		return fmt.Errorf("start task: %w", err)
	}
	return nil
}

func (*schtasksManager) Uninstall() error {
	if err := stopWindowsTask(); err != nil {
		slog.Warn("schtasks: stop task failed", "error", err)
	}
	if err := deleteWindowsTask(); err != nil {
		return err
	}
	if err := os.Remove(windowsTaskScriptPath()); err != nil && !os.IsNotExist(err) {
		return fmt.Errorf("remove task script: %w", err)
	}
	return nil
}

func (*schtasksManager) Start() error {

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Read the wrapped PowerShell output in the error for the exact Start-ScheduledTask failure reason.
  2. Check the Task Scheduler service is running: `Get-Service Schedule`.
  3. Confirm the task exists and inspect its state: `Get-ScheduledTask -TaskName <name>`.
  4. Try starting it manually: `Start-ScheduledTask -TaskName <name>` and check `$?`/state to reproduce outside the daemon.
  5. Uninstall and reinstall to recreate the task with a fresh principal.

Example fix

// before
if err := m.Start(); err != nil {
	return fmt.Errorf("start task: %w", err)
}
// after: log wrapped output and surface remediation hint
if err := m.Start(); err != nil {
	slog.Error("schtasks: failed to start newly created task; try uninstall+install", "error", err)
	return fmt.Errorf("start task: %w", err)
}
Defensive patterns

Strategy: retry

Validate before calling

out, _ := exec.Command("powershell", "-NoProfile", "-Command",
	"Get-ScheduledTask -TaskName '<name>' -ErrorAction SilentlyContinue").Output()
// task should exist after Install; verify the Schedule service is running

Try / catch

if err := daemon.Install(scriptPath); err != nil {
	if strings.Contains(err.Error(), "start task") {
		time.Sleep(2 * time.Second)
		if err2 := daemon.Start(); err2 != nil {
			slog.Error("task start failed", "error", err2)
		}
	}
}

Prevention

When it happens

Trigger: Calling daemon.Install on Windows when createWindowsTask succeeds but startWindowsTask fails: task immediately not found, Get-ScheduledTask returns an error state, Start-ScheduledTask rejects the request, or the PowerShell script exits non-zero.

Common situations: Fresh install on a machine where the task is registered but cannot be started (restricted RunLevel Limited principal conflicts, Task Scheduler service stopped, group policy blocks starting tasks, antivirus interference).

Related errors


AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06). Data as JSON: /api/errors/43b7029b7bbe95a1. Report an issue: GitHub.