chenhg5/cc-connect · error

remove plist: %w

Error message

remove plist: %w

What it means

launchd Uninstall wraps os.Remove failure on the plist when the error is not 'not exists' (typically permission denied). A missing plist is tolerated by design; other removal failures abort the uninstall.

Source

Thrown at daemon/launchd.go:86

	}

	domain := preferredLaunchdDomain()
	if out, err := runLaunchctl("bootstrap", domain, plistPath); err != nil {
		return fmt.Errorf("launchctl bootstrap: %s (%w)", out, err)
	}

	if _, err := runLaunchctl("kickstart", "-kp", launchdTarget(domain)); err != nil {
		return fmt.Errorf("launchctl kickstart: %w", err)
	}
	return nil
}

func (m *launchdManager) Uninstall() error {
	bootoutLaunchdTargets()

	plistPath := launchdPlistPath()
	if err := os.Remove(plistPath); err != nil && !os.IsNotExist(err) {
		return fmt.Errorf("remove plist: %w", err)
	}
	return nil
}

func (*launchdManager) Start() error {
	if _, target, _, ok := loadedLaunchdTarget(); ok {
		out, err := runLaunchctl("kickstart", "-kp", target)
		if err != nil {
			return fmt.Errorf("start: %s (%w)", out, err)
		}
		return nil
	}

	domain := preferredLaunchdDomain()
	plistPath := launchdPlistPath()
	var out string
	if _, err := runLaunchctl("bootstrap", domain, plistPath); err != nil {
		// already bootstrapped — try kickstart

View on GitHub (pinned to 4000b2338a)

Solutions

  1. Check file ownership of the plist in ~/Library/LaunchAgents
  2. Bootout the job before removing if launchd holds it open
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at daemon/launchd.go:86 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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