Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

ChatGPT OAuth agents fail text turns when native image_generation tool is attached

Aperta
#1,237 8 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
go
Ambito
api, backend

Direzione di ricerca

Inizia riproducendo la richiesta di testo ChatGPT OAuth con il comando curl fornito, quindi esamina internal/agent/loop_pipeline_callbacks.go e internal/pipeline/think_stage.go per la gestione dei native tools. Traccia l’attachment image_generation e i controlli del nome dello strumento attraverso i percorsi degli agent elencati. Il lavoro è completato quando non si verificano nil panic, nessuno strumento nativo per la generazione di immagini viene usato per impostazione predefinita nei normali turni di testo ed esiste una copertura di regressione per strumenti misti e richieste di testo OAuth.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

agent:github-maintain area:providers bug maintain:triaged P1-high

What to build

Fix ChatGPT Subscription (OAuth) agent runs so ordinary text turns do not fail when native image_generation support is available.

On a v3.14.0 deployment using a ChatGPT OAuth provider (chatgpt_oauth) and an agent configured with gpt-5.5, a simple text message to the agent can fail before any useful answer is persisted. The failure has two related parts:

  1. The agent loop injects the native Responses API tool sentinel:

    { "type": "image_generation" }
    

    into normal text chat turns whenever the provider advertises image generation capability.

  2. Several tool-processing paths assume every tool definition is a function tool and dereference td.Function.Name. Native tools have Function == nil, so this can panic.

Observed stack traces included nil pointer panics in paths such as:

  • internal/agent/loop_pipeline_callbacks.go while counting or checking tool names
  • internal/pipeline/think_stage.go while building AllowedTools

After adding local nil guards, the request no longer panicked, but ChatGPT OAuth still returned an upstream 500 for a simple text turn when the native image_generation tool was included. Disabling image generation for that agent via:

{
  "allow_image_generation": false
}

made the same agent reply successfully.

Acceptance criteria

  • Native provider tools with Function == nil never panic the agent loop, pipeline, tool filtering, history metadata, tracing, or retry guard paths.
  • Ordinary text-only turns for ChatGPT OAuth agents do not attach image_generation unless image generation is explicitly requested or otherwise intentionally enabled for that turn.
  • If allow_image_generation remains the control, document it and/or expose it in agent/provider settings so admins can disable the native image tool without editing hidden JSON.
  • Add regression tests covering a tool list that contains both a function tool and { "type": "image_generation" }.
  • Add a regression test or fixture showing a ChatGPT OAuth text turn does not include image_generation by default.

Reproduction notes

Environment:

  • GoClaw v3.14.0
  • DB schema 80
  • Provider type: chatgpt_oauth
  • Model: gpt-5.5
  • Agent: predefined agent using the ChatGPT OAuth provider

Minimal request:

curl http://localhost:18790/v1/chat/completions \
  -H "Authorization: Bearer $GOCLAW_GATEWAY_TOKEN" \
  -H "X-GoClaw-User-Id: system" \
  -H "X-GoClaw-Tenant-Id: <tenant-id>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "agent:rook",
    "messages": [{"role": "user", "content": "xin chào"}],
    "stream": false,
    "user": "system"
  }'

Observed behavior before local workaround:

  • HTTP connection can close with an empty reply due to panic.
  • After nil guards, the request can return a structured 500 from the ChatGPT OAuth backend when image_generation is still attached to the text turn.
  • Session history may remain at 0 messages because the turn fails before final persistence.

Observed workaround:

  • Set other_config.allow_image_generation=false for the affected agent.
  • Recreate/restart the service so the agent config is reloaded.
  • The same text request returns HTTP 200 and persists user+assistant messages.

Blocked by

None - can start immediately.

Lingua principale
Go
Stelle
3.7k
Fork
1.1k
Merge medio
1g 8h
PR unite (30g)
11

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di nextlevelbuilder/goclaw

Tutte le issue di nextlevelbuilder/goclaw

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.