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
- Read the wrapped PowerShell output in the error for the exact Start-ScheduledTask failure reason.
- Check the Task Scheduler service is running: `Get-Service Schedule`.
- Confirm the task exists and inspect its state: `Get-ScheduledTask -TaskName <name>`.
- Try starting it manually: `Start-ScheduledTask -TaskName <name>` and check `$?`/state to reproduce outside the daemon.
- 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
- Ensure the Task Scheduler service (Schedule) is running before install.
- Install from an interactive user session, not a service context.
- Retry Start after a short delay; task registration can lag.
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
- start existing task: %w
- start scheduled task: %s (%w)
- systemd user session not available in WSL2. Add the follow
- powershell.exe not found: Windows Task Scheduler management
- create data dir: %w
AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06).
Data as JSON: /api/errors/43b7029b7bbe95a1.
Report an issue: GitHub.