mvanhorn/last30days-skill · error

engine: resolve user cache dir (set %s to override): %w

Error message

engine: resolve user cache dir (set %s to override): %w

What it means

Error "engine: resolve user cache dir (set %s to override): %w" thrown in mvanhorn/last30days-skill.

Source

Thrown at mcp/internal/engine/extract.go:66

		// Reset the sync.Once so a follow-up call can retry rather than
		// permanently caching the error. Retry is the right default when
		// the failure is transient (e.g., disk full, parent dir restored).
		resetOnce(cacheDir)
		return "", extractErr
	}
	return cacheDir, nil
}

// EnsureUserCache wraps Ensure with the OS user cache dir (or the
// LAST30DAYS_CACHE_DIR override) as base. Production callers use this; tests
// use Ensure with an explicit temp dir.
func EnsureUserCache(src fs.FS, version string) (string, error) {
	if override := os.Getenv(CacheEnvOverride); override != "" {
		return Ensure(src, override, version)
	}
	base, err := os.UserCacheDir()
	if err != nil {
		return "", fmt.Errorf("engine: resolve user cache dir (set %s to override): %w", CacheEnvOverride, err)
	}
	return Ensure(src, base, version)
}

func ensureLocked(src fs.FS, cacheDir, version string) error {
	if sentinelMatches(cacheDir, version) {
		return nil
	}
	tmpDir := cacheDir + ".tmp"
	if err := os.RemoveAll(tmpDir); err != nil {
		return fmt.Errorf("engine: clean tmp cache: %w", err)
	}
	if err := os.MkdirAll(tmpDir, 0o755); err != nil {
		return fmt.Errorf("engine: create tmp cache (%s, set %s to override): %w", tmpDir, CacheEnvOverride, err)
	}
	if err := extractAll(src, tmpDir); err != nil {
		_ = os.RemoveAll(tmpDir)
		return err

View on GitHub (pinned to c7460f6114)

Solutions

  1. Set the cache dir override environment variable (LAST30DAYS_CACHE_DIR) to a writable directory so the engine does not need to resolve the OS user cache dir.
  2. Fix the environment so os.UserCacheDir() works: set HOME (Unix) or APPDATA (Windows) to a valid directory.

When it happens

Trigger: Fires during engine cache extraction when the OS user cache directory cannot be resolved (e.g. XDG_CACHE_HOME/HOME unset or invalid). Set the override environment variable named in the message to point at a writable directory.

Common situations: See trigger scenarios.


AI-assisted analysis of mvanhorn/last30days-skill@c7460f6114 (2026-08-15). Data as JSON: /api/errors/c50676f33a59e365. Report an issue: GitHub.