hermes - 💡(How to fix) Fix [Bug]: Misleading Error Message When Goal Judge Nous Provider Has Auth Issues [2 pull requests]

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…

Error Message

When configuring goal_judge to use the Nous provider, if the authentication is not properly set up (i.e., no active Nous session in auth.json or credential pool), the system currently displays a misleading error message that suggests the model is the problem. This leads users down the wrong debugging path. The error message should clearly indicate that the judge provider is unavailable due to authentication issues, not model quality problems.

Additional Logs / Traceback (optional)

The _try_nous() function returns (None, None) when auth is missing, but the error handling in the goal loop doesn't propagate this clearly to the user. The pause condition is based on parse failures, which may also occur if the API returns empty/unparseable responses due to auth errors. Update error messages to clearly indicate authentication issues when the Nous provider is unavailable. Specifically:

Root Cause

This implies the model is at fault, but the real issue is that the Nous provider cannot be used because:

  • No Nous authentication exists
  • Authentication has expired
  • Runtime credentials are missing

Fix Action

Fixed

Code Example

Goal paused — the judge model (3 turns) isn't returning the required JSON verdict. Route the judge to a stricter model in ~/.hermes/config.yaml:
  auxiliary:
    goal_judge:
      provider: openrouter
      model: google/gemini-3-flash-preview
Then /goal resume to continue.

---

Debug report uploaded:
  Report       https://paste.rs/94g7o
  agent.log    https://paste.rs/3rd5s
  gateway.log  https://paste.rs/FFLBm

---
RAW_BUFFERClick to expand / collapse

Bug Description

When configuring goal_judge to use the Nous provider, if the authentication is not properly set up (i.e., no active Nous session in auth.json or credential pool), the system currently displays a misleading error message that suggests the model is the problem. This leads users down the wrong debugging path.

Steps to Reproduce

  1. Set auxiliary.goal_judge.provider: nous in config.yaml
  2. Ensure Nous authentication is not set up (no /nous login executed)
  3. Start a goal session
  4. After a few turns, observe the misleading pause message

Expected Behavior

The error message should clearly indicate that the judge provider is unavailable due to authentication issues, not model quality problems.

Actual Behavior

After 3 consecutive parse failures, the goal loop pauses with this message:

⏸ Goal paused — the judge model (3 turns) isn't returning the required JSON verdict. Route the judge to a stricter model in ~/.hermes/config.yaml:
  auxiliary:
    goal_judge:
      provider: openrouter
      model: google/gemini-3-flash-preview
Then /goal resume to continue.

This implies the model is at fault, but the real issue is that the Nous provider cannot be used because:

  • No Nous authentication exists
  • Authentication has expired
  • Runtime credentials are missing

Affected Component

Setup / Installation, Configuration (config.yaml, .env, hermes setup)

Messaging Platform (if gateway-related)

N/A (CLI only)

Debug Report

Debug report uploaded:
  Report       https://paste.rs/94g7o
  agent.log    https://paste.rs/3rd5s
  gateway.log  https://paste.rs/FFLBm

Operating System

Ubuntu 24.04

Python Version

3.12.3

Hermes Version

0.13.0

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

The _try_nous() function returns (None, None) when auth is missing, but the error handling in the goal loop doesn't propagate this clearly to the user. The pause condition is based on parse failures, which may also occur if the API returns empty/unparseable responses due to auth errors.

Proposed Fix (optional)

Update error messages to clearly indicate authentication issues when the Nous provider is unavailable. Specifically:

  • Add warning logs in _try_nous() when auth is missing
  • Return a more specific reason from judge_turn() when client is None
  • Update the pause message to mention authentication as a possible cause

Are you willing to submit a PR for this?

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

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