hermes - 💡(How to fix) Fix [Bug]: custom GPT-5.4 provider via gateway hits Responses API 400 "Invalid 'input[n].name': empty string" even after /reset and update [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#11378Fetched 2026-04-19 15:03:45
View on GitHub
Comments
0
Participants
1
Timeline
3
Reactions
0
Author
Participants
Timeline (top)
closed ×1cross-referenced ×1labeled ×1

Error Message

Observed user-facing error:

Non-retryable error (HTTP 400): HTTP 400: Invalid 'input[4].name': empty string. Expected a string with minimum length 1, but got an empty string instead.

Error code: 400 - {'error': {'message': "Invalid 'input[4].name': empty string. Expected a string with minimum length 1, but got an empty string instead.", 'type': 'invalid_request_error', 'param': 'input[4].name', 'code': 'empty_string'}}

Non-retryable error (HTTP 400) — trying fallback...

Another repro after /reset:

❌ Non-retryable error (HTTP 400): HTTP 400: Invalid 'input[3].name': empty string. Expected a string with minimum length 1, but got an empty string instead.

Root Cause

Used `hermes debug share --local` because I am filing from a local environment.

Code Example

Used `hermes debug share --local` because I am filing from a local environment.

Summary:
- version: 0.8.0 (2026.4.8) [964ef681]
- os: Darwin 24.6.0 arm64
- python: 3.11.6
- openai_sdk: 2.31.0
- profile: default
- model: gpt-5.4
- provider: custom
- terminal: local

Relevant local dump shows the active model/provider are indeed `gpt-5.4` + `custom`.

---

Observed user-facing error:


Non-retryable error (HTTP 400): HTTP 400: Invalid 'input[4].name': empty string. Expected a string with minimum length 1, but got an empty string instead.

Error code: 400 - {'error': {'message': "Invalid 'input[4].name': empty string. Expected a string with minimum length 1, but got an empty string instead.", 'type': 'invalid_request_error', 'param': 'input[4].name', 'code': 'empty_string'}}

Non-retryable error (HTTP 400) — trying fallback...


Another repro after `/reset`:


Non-retryable error (HTTP 400): HTTP 400: Invalid 'input[3].name': empty string. Expected a string with minimum length 1, but got an empty string instead.
RAW_BUFFERClick to expand / collapse

Bug Description

When Hermes Agent is used through the gateway with a custom provider and model gpt-5.4, normal user messages can fail with a Responses API 400:

HTTP 400: Invalid 'input[n].name': empty string

This still reproduces after:

  • running hermes update
  • confirmed gateway service restart
  • running /reset multiple times

This no longer looks like a stale session problem. The error index changes between input[3] and input[4], which suggests Hermes is generating or replaying a malformed Responses input item containing an empty function_call.name.

I first noticed fragmented / logically disconnected replies in Weixin, but the current blocking issue is broader: after reset, even a simple plain-text message can fail immediately.

Related upstream context: #10473, #10548, #8133, #11179, #10175, #11001.

Steps to Reproduce

  1. Configure Hermes with a custom provider / relay
  2. Select model gpt-5.4
  3. Use the messaging gateway
  4. Run /update and confirm the gateway restart is reported
  5. Run /reset
  6. Send a plain text message such as 当前hermes版本是多少
  7. Hermes returns a 400 error instead of answering

Expected Behavior

A fresh session after /reset should accept a normal user message and return a normal answer.

Actual Behavior

Hermes returns:

Non-retryable error (HTTP 400): HTTP 400: Invalid 'input[3].name': empty string. Expected a string with minimum length 1, but got an empty string instead.

Sometimes the index is input[4] instead of input[3]. The fallback path also fails with the same error.

Affected Component

Setup / Installation, Tools (terminal, file ops, web, code execution, etc.), Configuration (config.yaml, .env, hermes setup)

Messaging Platform (if gateway-related)

No response

Debug Report

Used `hermes debug share --local` because I am filing from a local environment.

Summary:
- version: 0.8.0 (2026.4.8) [964ef681]
- os: Darwin 24.6.0 arm64
- python: 3.11.6
- openai_sdk: 2.31.0
- profile: default
- model: gpt-5.4
- provider: custom
- terminal: local

Relevant local dump shows the active model/provider are indeed `gpt-5.4` + `custom`.

Operating System

macOS 15.6 / Darwin 24.6.0

Python Version

3.11.6

Hermes Version

0.8.0 (2026.4.8) [964ef681]

Additional Logs / Traceback (optional)

Observed user-facing error:


Non-retryable error (HTTP 400): HTTP 400: Invalid 'input[4].name': empty string. Expected a string with minimum length 1, but got an empty string instead.

Error code: 400 - {'error': {'message': "Invalid 'input[4].name': empty string. Expected a string with minimum length 1, but got an empty string instead.", 'type': 'invalid_request_error', 'param': 'input[4].name', 'code': 'empty_string'}}

Non-retryable error (HTTP 400) — trying fallback...


Another repro after `/reset`:


❌ Non-retryable error (HTTP 400): HTTP 400: Invalid 'input[3].name': empty string. Expected a string with minimum length 1, but got an empty string instead.

Root Cause Analysis (optional)

Likely related to Hermes forcing GPT-5.x models onto the Responses API path for custom providers, and then building or replaying a malformed Responses input item where a function_call has an empty name.

Given that the issue still reproduces immediately after /reset and after a confirmed hermes update + gateway restart, this appears to be a Hermes/runtime compatibility bug rather than only a stale session artifact.

Proposed Fix (optional)

Two likely directions:

  1. Do not force custom GPT-5 providers onto the Responses path when the provider does not fully match OpenAI Responses semantics
  2. Add stricter validation before sending Responses input, and drop malformed function_call items whose name is empty

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

extent analysis

TL;DR

The issue can be fixed by modifying Hermes to either not force custom GPT-5 providers onto the Responses path or by adding stricter validation for Responses input to drop malformed function_call items.

Guidance

  • Investigate the Hermes configuration and code to identify where the custom GPT-5 provider is being forced onto the Responses path and consider modifying this behavior.
  • Add validation checks for function_call items in the Responses input to ensure that the name field is not empty before sending the request.
  • Review the related upstream context issues (#10473, #10548, #8133, #11179, #10175, #11001) to see if they provide any insights into the problem or potential solutions.
  • Consider testing with a different model or provider to see if the issue is specific to the gpt-5.4 model or the custom provider.

Example

No code example is provided as the issue does not include enough information about the specific code changes required.

Notes

The issue appears to be related to a Hermes/runtime compatibility bug rather than a stale session artifact, and the proposed fix directions suggest modifying the Hermes configuration or code to resolve the issue.

Recommendation

Apply a workaround by modifying the Hermes configuration to not force custom GPT-5 providers onto the Responses path or by adding stricter validation for Responses input. This is because the issue is likely related to a compatibility bug and modifying the configuration or code is a more targeted solution than upgrading to a fixed version (which is not mentioned in the issue).

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING