You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Long WebUI sessions that spend most of their time in tool calls can appear silent even while Hermes is actively working. This is especially painful for long-running sessions and for users who switch between sessions: if no visible interim text is emitted, the browser can look stuck even though reasoning and tool events are moving underneath.
This is not the same as the SSE reattach/session-switching bug. Reattach can preserve visible text once it exists, but it cannot help when a run emits all progress only through reasoning/tool channels and no normal assistant content is produced until much later.
Why this matters
For long WebUI work, visible interim progress is part of the user-facing contract:
Users need to know the run is still alive before the final answer arrives.
Session switching should not make a long run feel blank or frozen.
Some model/provider combinations are more likely to keep intermediate work inside reasoning/tool channels unless the WebUI instruction is explicit.
The UI must not expose chain-of-thought or raw tool logs, but it should receive concise normal assistant text such as what phase is happening or what was found.
History and evidence
Relevant history from the repository:
2026-05-16 2dfe3ffb introduced a strong WebUI visible-progress contract: for multi-step tool work, the model should provide brief user-visible progress updates as normal assistant content before continuing with tool calls.
2026-05-18 PR fix(chat): align WebUI context with messaging sessions #2547 / 540292a7 softened that language from a contract to guidance and changed the key instruction to "you may provide" visible progress updates, while also asking the model not to add extra browser-only status chatter.
2026-05-25 5b9484b8 only suppresses duplicate reasoning/thinking echoes after text was already streamed as visible assistant output. It does not suppress normal assistant output and is not the root cause of invisible progress.
Recent local 8787 dogfood showed the practical impact: one long tool-heavy run had reasoning/tool activity but no token or interim_assistant events for a meaningful period, and another run did not emit its first visible token until after a large batch of tool events. The browser experience was "nothing is coming out" even though the backend was working.
Expected behavior
For long multi-step WebUI tasks that use tools, Hermes should instruct capable models to emit concise visible interim progress as normal assistant content before the next tool batch or after a meaningful finding.
The guidance should also make the boundaries explicit:
Do not reveal chain-of-thought, hidden reasoning, secrets, or raw tool logs.
Do not make direct or very short answers artificially chatty.
Do not treat reasoning/thinking/tool-result streams as a substitute for visible interim assistant text.
Proposed scope
Restore a firmer WebUI progress contract in the streaming prompt and add regression coverage that prevents the instruction from drifting back to optional/silent wording.
This should not change SSE reconnect behavior, persisted session replay, or reasoning echo suppression.
Acceptance criteria
The WebUI progress prompt uses explicit "provide/send" style language rather than optional "may" language for long tool-running turns.
The prompt tells models not to keep all progress only in reasoning/thinking/tool-result channels.
Existing safeguards against chain-of-thought/raw tool log leakage remain present.
Static tests lock the wording/intent so future tone-parity work cannot accidentally remove visible interim progress again.
Problem
Long WebUI sessions that spend most of their time in tool calls can appear silent even while Hermes is actively working. This is especially painful for long-running sessions and for users who switch between sessions: if no visible interim text is emitted, the browser can look stuck even though reasoning and tool events are moving underneath.
This is not the same as the SSE reattach/session-switching bug. Reattach can preserve visible text once it exists, but it cannot help when a run emits all progress only through reasoning/tool channels and no normal assistant content is produced until much later.
Why this matters
For long WebUI work, visible interim progress is part of the user-facing contract:
History and evidence
Relevant history from the repository:
2dfe3ffbintroduced a strong WebUI visible-progress contract: for multi-step tool work, the model should provide brief user-visible progress updates as normal assistant content before continuing with tool calls.540292a7softened that language from a contract to guidance and changed the key instruction to "you may provide" visible progress updates, while also asking the model not to add extra browser-only status chatter.5b9484b8only suppresses duplicate reasoning/thinking echoes after text was already streamed as visible assistant output. It does not suppress normal assistant output and is not the root cause of invisible progress.Recent local 8787 dogfood showed the practical impact: one long tool-heavy run had reasoning/tool activity but no
tokenorinterim_assistantevents for a meaningful period, and another run did not emit its first visible token until after a large batch of tool events. The browser experience was "nothing is coming out" even though the backend was working.Expected behavior
For long multi-step WebUI tasks that use tools, Hermes should instruct capable models to emit concise visible interim progress as normal assistant content before the next tool batch or after a meaningful finding.
The guidance should also make the boundaries explicit:
Proposed scope
Restore a firmer WebUI progress contract in the streaming prompt and add regression coverage that prevents the instruction from drifting back to optional/silent wording.
This should not change SSE reconnect behavior, persisted session replay, or reasoning echo suppression.
Acceptance criteria