mvanhorn/last30days-skill · error
engine: subprocess exceeded %s timeout
Error message
engine: subprocess exceeded %s timeout
What it means
Error "engine: subprocess exceeded %s timeout" thrown in mvanhorn/last30days-skill.
Source
Thrown at mcp/internal/engine/run.go:109
cmd.Stdout = &stdout
cmd.Stderr = &stderr
err = cmd.Run()
res := &RunResult{
Stdout: stdout.Bytes(),
Stderr: stderr.Bytes(),
ExitCode: 0,
TimedOut: errors.Is(subCtx.Err(), context.DeadlineExceeded),
}
if err == nil {
return res, nil
}
var exitErr *exec.ExitError
if errors.As(err, &exitErr) {
res.ExitCode = exitErr.ExitCode()
if res.TimedOut {
return res, fmt.Errorf("engine: subprocess exceeded %s timeout", timeout)
}
return res, fmt.Errorf("engine: subprocess exited with code %d", res.ExitCode)
}
return res, fmt.Errorf("engine: subprocess failed to start: %w", err)
}
// resolvePython returns an absolute path to the interpreter or an error
// naming the install URL. If the caller supplied a path we trust it - tests
// rely on this to inject a stub. Otherwise we look up python3 on PATH.
func resolvePython(override string) (string, error) {
if override != "" {
return override, nil
}
path, err := exec.LookPath(DefaultPythonBinary)
if err == nil {
return path, nil
}
return "", fmt.Errorf(View on GitHub (pinned to c7460f6114)
Solutions
- Increase the subprocess timeout in the engine options for long research runs.
- Reduce the scope of the run (fewer sources, quicker depth) so it finishes within the timeout.
- Investigate whether the subprocess hung (network stall) by running last30days.py directly with the same arguments.
When it happens
Trigger: Fires when the spawned last30days.py subprocess runs longer than the configured timeout. Common for very broad research topics, slow networks, or unresponsive upstream sources.
Common situations: See trigger scenarios.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
AI-assisted analysis of mvanhorn/last30days-skill@c7460f6114 (2026-08-15).
Data as JSON: /api/errors/580c4260bf5de752.
Report an issue: GitHub.