Verified live testing the new atomic pct_create: an assent-window auto-approved pct_create appeared to "run" (logged "auto-approved... running now") but the execution stayed stuck at 'approved' forever. Root cause: `go executeApprovedViaAPI(ctx, ...)` passed the MCP tool-call's own context — which is cancelled the instant the triggering /chat request's HTTP response completes, i.e. on every normal turn. The spawned goroutine's POST to the approval-decision endpoint died with "context canceled" before it could even start the real work, and nothing surfaced this to the operator or the agent — the execution just sat at 'approved' with no error, indistinguishable from "still running." This is exactly the context-lifetime bug class httpapi's own approval goroutine (executeApprovedAction) already avoided by using context.Background() — it had just been missed in these two call sites (apt_upgrade and pct_create auto-approve). Fixed both to use context.Background(), matching the correct pattern already in place elsewhere. Audited for other goroutines spawned with a request-scoped ctx — none found; the sshExec internal goroutines are synchronous/waited-on via select and correctly scoped to the call. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
64 KiB
64 KiB