From 15d9d9483a05e5532df8f1f777784c57a46cb702 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 20 Feb 2026 12:57:35 +0000 Subject: [PATCH] fix(dispatch): fall back to FORGE_TOKEN env when ticket has no token Tickets generated by poll-forge.sh don't include forge_token. The dispatch runner now checks FORGE_TOKEN env var as fallback, and gracefully skips reporting if no token is available. Co-Authored-By: Charon --- cmd/ai/cmd_dispatch.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cmd/ai/cmd_dispatch.go b/cmd/ai/cmd_dispatch.go index 3aa61f8e..45c9db7c 100644 --- a/cmd/ai/cmd_dispatch.go +++ b/cmd/ai/cmd_dispatch.go @@ -506,6 +506,15 @@ func execAgent(ctx context.Context, runner, model, prompt, dir, logPath string) } func reportToForge(t dispatchTicket, success bool, body string) { + token := t.ForgeToken + if token == "" { + token = os.Getenv("FORGE_TOKEN") + } + if token == "" { + log.Warn("No forge token available, skipping report") + return + } + url := fmt.Sprintf("%s/api/v1/repos/%s/%s/issues/%d/comments", strings.TrimSuffix(t.ForgeURL, "/"), t.RepoOwner, t.RepoName, t.IssueNumber) @@ -517,7 +526,7 @@ func reportToForge(t dispatchTicket, success bool, body string) { log.Error("Failed to create request", "err", err) return } - req.Header.Set("Authorization", "token "+t.ForgeToken) + req.Header.Set("Authorization", "token "+token) req.Header.Set("Content-Type", "application/json") client := &http.Client{Timeout: 10 * time.Second}