Skip to content

gpt-5.4-mini via Responses API: incomplete turn false positive + claude eager_input_streaming schema rejection #91622

Description

@beerygaz

Summary

Two separate bugs affecting cron job reliability on OpenClaw 2026.6.1:

Bug 1: claude-haiku-4.5 tool schema rejection

400 tools.0.custom.eager_input_streaming: Extra inputs are not permitted

OpenClaw sends eager_input_streaming in the tool schema payload to Claude via GitHub Copilot. Claude's API rejects this as an unsupported field. This started after removing custom model entries from openclaw.json (so the plugin catalog takes over), but the plugin catalog shouldn't inject fields that the target API rejects.

Bug 2: gpt-5.4-mini (Responses API) incomplete turn false positive

incomplete turn detected: stopReason=stop hasLastAssistant=yes
hasCurrentAttemptAssistant=yes payloads=0 tools=1 replaySafe=no

When a cron job uses gpt-5.4-mini (now routed via /responses endpoint), the model correctly makes a tool call (exec), but OpenClaw's loop detector fires because:

  • payloads=0 (no text response yet — model is waiting for tool result)
  • tools=1 (tool was called)
  • After executing the tool, the model doesn't get a chance to emit a final response

This causes the agent run to abort with "Agent couldn't generate a response" even though the tool executed successfully.

Interesting: An identical cron job with a slightly different prompt works fine — suggesting the issue is timing/turn-structure dependent with the Responses API.

Reproduction

Two cron jobs with near-identical configs:

  • inbox-subs-sweep → works with gpt-5.4-mini
  • inbox-security-sweep → always fails with the incomplete turn error ❌

Both use toolsAllow: ["exec", "read"] and similar prompts.

Environment

  • OpenClaw 2026.6.1
  • GitHub Copilot provider
  • Plugin catalog routes gpt-5.4-mini via openai-responses API
  • Custom model entries cleared from openclaw.json

Workaround

Currently none that works for both bugs simultaneously. claude-haiku-4.5 hits bug 1, gpt-5.4-mini hits bug 2.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.impact:message-lossChannel message delivery can be lost, duplicated, or misrouted.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions