hermes - 💡(How to fix) Fix [BUG] hindsight_retain fails with 'retain_async' unexpected keyword argument in v0.10.0 [1 comments, 2 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#14550Fetched 2026-04-24 06:16:35
View on GitHub
Comments
1
Participants
2
Timeline
5
Reactions
0
Author
Participants
Timeline (top)
labeled ×4commented ×1

Error Message

hindsight_reflect also fails with an empty error message (Failed to reflect:). 3. Observe the retain_async error

  • Upgrading the Hindsight server to the latest version (v0.5.3) does not resolve the error, confirming the bug is in the Hermes client code, not the server.

Root Cause

The Hindsight Python client (vectorize-io/hindsight) defines two different methods:

  1. aretain() (single memory) — does NOT accept retain_async parameter
  2. aretain_batch() (batch memories) — does accept retain_async parameter

Source: hindsight_client.py

It appears that Hermes v0.10.0 is incorrectly passing retain_async to aretain() instead of aretain_batch(), or the internal retain logic was changed to use a parameter that the single-memory API does not support.

Code Example

Failed to store memory: Hindsight.aretain() got an unexpected keyword argument 'retain_async'
RAW_BUFFERClick to expand / collapse

Bug Description

In Hermes v0.10.0, calling hindsight_retain fails with:

Failed to store memory: Hindsight.aretain() got an unexpected keyword argument 'retain_async'

hindsight_reflect also fails with an empty error message (Failed to reflect:).

hindsight_recall works normally.

Root Cause Analysis

The Hindsight Python client (vectorize-io/hindsight) defines two different methods:

  1. aretain() (single memory) — does NOT accept retain_async parameter
  2. aretain_batch() (batch memories) — does accept retain_async parameter

Source: hindsight_client.py

It appears that Hermes v0.10.0 is incorrectly passing retain_async to aretain() instead of aretain_batch(), or the internal retain logic was changed to use a parameter that the single-memory API does not support.

Steps to Reproduce

  1. Configure Hermes with external Hindsight (provider: hindsight, mode local_external)
  2. Run any operation that triggers hindsight_retain
  3. Observe the retain_async error

Expected Behavior

hindsight_retain should store memory without errors, as it did in previous versions.

Actual Behavior

  • hindsight_retainTypeError: Hindsight.aretain() got an unexpected keyword argument 'retain_async'
  • hindsight_reflectFailed to reflect: (likely related)
  • hindsight_recall → Works fine (read-only, unaffected)

Environment

  • Hermes Agent Version: v0.10.0 (2026.4.16)
  • Python: 3.11.15
  • Hindsight Mode: local_external
  • Hindsight Server: external instance (tested with v0.5.3)

Additional Context

  • The Hindsight server itself responds correctly (HTTP 200, <3ms latency), so this is not a connectivity or server-side issue.
  • Upgrading the Hindsight server to the latest version (v0.5.3) does not resolve the error, confirming the bug is in the Hermes client code, not the server.

Possible Fix

Remove the retain_async parameter from the aretain() call path in Hermes, or route single-memory retain operations through the correct API method that does not require this parameter.

extent analysis

TL;DR

Update the Hermes client code to correctly use the aretain_batch() method or remove the retain_async parameter from the aretain() call.

Guidance

  • Verify that the hindsight_retain operation is indeed calling the aretain() method with the retain_async parameter by reviewing the Hermes client code.
  • Check if the aretain_batch() method is available in the Hermes client and if it can be used for single-memory retain operations.
  • Consider updating the Hermes client code to use the correct API method for single-memory retain operations, or remove the retain_async parameter if it's not required.
  • Test the changes with the hindsight_retain operation to ensure it works without errors.

Example

No code snippet is provided as the issue is related to the internal implementation of the Hermes client and requires a review of the codebase.

Notes

The fix may require changes to the Hermes client code, and it's essential to review the codebase to determine the correct solution. The issue is not related to the Hindsight server version, as confirmed by testing with the latest version.

Recommendation

Apply a workaround by removing the retain_async parameter from the aretain() call or updating the Hermes client code to use the correct API method. This is because the issue is in the Hermes client code, and updating the Hindsight server version does not resolve the error.

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