Skip to content

fix: make hindsight client timeout configurable via HINDSIGHT_TIMEOUT env var#10045

Open
nightq wants to merge 4 commits into
NousResearch:mainfrom
nightq:fix/issue-9869-hindsight-timeout-v2
Open

fix: make hindsight client timeout configurable via HINDSIGHT_TIMEOUT env var#10045
nightq wants to merge 4 commits into
NousResearch:mainfrom
nightq:fix/issue-9869-hindsight-timeout-v2

Conversation

@nightq

@nightq nightq commented Apr 15, 2026

Copy link
Copy Markdown

Summary

Makes the Hindsight cloud client timeout configurable to prevent hindsight_reflect failures on longer operations.

Root Cause

The Hindsight cloud client was initialized with a hardcoded 30s timeout. The hindsight_reflect tool performs LLM synthesis across the memory graph, which routinely takes longer than 30 seconds. While _run_sync() has a 120s wrapper, the inner HTTP client timeout fires first.

Fix

Read timeout from HINDSIGHT_TIMEOUT env var with a default of 300s (matching other Hermes timeout defaults).

Test Plan

  • Existing hindsight tests pass
  • New tests verify default and env var override

Closes #9869

nightq added 4 commits April 15, 2026 11:41
Fixes NousResearch#9999

Root cause: _sanitize_api_messages compared raw tool_call_id strings
without stripping whitespace, causing valid tool results to be treated
as orphaned when IDs had leading/trailing spaces.
Fix: strip whitespace in _get_tool_call_id_static and when collecting
result_call_ids from tool messages.
Fixes NousResearch#9980

Root cause: _send_raw_message hardcoded 'chat_id' as receive_id_type,
causing [230001] invalid receive_id errors when sending to user open_ids
(prefix 'ou_') or union_ids (prefix 'on_').
Fix: Add _detect_receive_id_type() that checks ID prefix (oc_→chat_id,
ou_→open_id, on_→union_id) and use it in _send_raw_message.
Fixes NousResearch#9950

Root cause: Prompts discarded for having no reasoning were not added to
completed_in_batch, causing --resume to retry them indefinitely.
Fix: Append prompt_index to completed_in_batch before continuing past
the discard branch.
… env var

Fixes NousResearch#9869

Root cause: Hindsight cloud client had hardcoded 30s timeout, causing
hindsight_reflect to fail for longer operations.
Fix: Read timeout from HINDSIGHT_TIMEOUT env var with default of 300s.
@TeemuSailynoja

Copy link
Copy Markdown

This would be great! For now, I have told the agent to just retain and recall and avoid reflecting on anything 😆

Another issue I have noticed is that I tried to self-host Hindsight "the correct way" by having a separate Docker container serve the API and MCP, but the cloud and local options for the plugin didn't pair nicely with that. I managed to duct tape together a solution, but I think it's not a very elegant one.

@alt-glitch alt-glitch added type/bug Something isn't working P3 Low — cosmetic, nice to have comp/plugins Plugin system and bundled plugins labels Apr 26, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

Likely duplicate of #9985 — same fix: make Hindsight cloud client timeout configurable via HINDSIGHT_TIMEOUT env var (default 300s).

@nicoloboschi

Copy link
Copy Markdown
Contributor

HINDSIGHT_TIMEOUT env var support is already in main (used in __init__.py config loading and request paths). Could you close?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Hindsight plugin hardcoded 30s timeout causes hindsight_reflect to fail

4 participants