Fix incorrect compress command name in tips

NousResearch/hermes-agent · cluster 20020 · gateway

Data as of

Nothing open on GitHub. Fix merged in #20579. Check it covers your case.

The short answer

0open issues
0open PRs
6items grouped
Known?
Yes. 6 related items grouped here, 1 issue already closed.
Fix event
A fix was merged to main in PR #20579. Check it covers your case. No release data is tracked.
Tracker
The maintainers' tracker marks this resolved, deciding PR #20579. That is separate from the fix event.
Still open
Nothing open on GitHub.

Multiple fixes correcting a wrong command name (likely /compact instead of /compress) appearing in context-overflow and compaction guidance tips. Related changes also touch memory authority, cache eviction, and summary boundary markers.

Open issues0

No open issues.

Open PRs0

No open pull requests.

Fixes on record

Merged to main. A stamp counts the issues a fix is linked to.

  • #20579 fix: salvage batch — compaction guidance, memory authority, cache eviction after compression

    merged to main

    files: agent/context_compressor.py, agent/memory_manager.py, gateway/run.py, scripts/release.py

    Show the diff
    • agent/context_compressor.py
      @@ -43,6 +43,9 @@
           "they were already addressed. "
           "Your current task is identified in the '## Active Task' section of the "
           "summary — resume exactly from there. "
      +    "IMPORTANT: Your persistent memory (MEMORY.md, USER.md) in the system "
      +    "prompt is ALWAYS authoritative and active — never ignore or deprioritize "
      +    "memory content due to this compaction note. "
           "Respond ONLY to the latest user message "
           "that appears AFTER this summary. The current session state (files, "
           "config, etc.) may reflect work described here — avoid repeating it:"
      @@ -1373,7 +1376,7 @@ def compress(self, messages: List[Dict[str, Any]], current_tokens: int = None, f
                   msg = messages[i].copy()
                   if i == 0 and msg.get("role") == "system":
                       existing = msg.get("content")
      -                _compression_note = "[Note: Some earlier conversation turns have been compacted into a handoff summary to preserve context space. The current session state may still reflect earlier work, so build on that summary and state rather than re-doing work.]"
      +                _compression_note = "[Note: Some earlier conversation turns have been compacted into a handoff summary to preserve context space. The current session state may still reflect earlier work, so build on that summary and state rather than re-doing work. Your persistent memory (MEMORY.md, USER.md) remains fully authoritative regardless of compaction.]"
                       if _compression_note not in _content_text_for_contains(existing):
                           msg["content"] = _append_text_to_content(
                               existing,
    • agent/memory_manager.py
      @@ -46,7 +46,7 @@
           re.IGNORECASE,
       )
       _INTERNAL_NOTE_RE = re.compile(
      -    r'\[System note:\s*The following is recalled memory context,\s*NOT new user input\.\s*Treat as informational background data\.\]\s*',
      +    r'\[System note:\s*The following is recalled memory context,\s*NOT new user input\.\s*Treat as (?:informational background data|authoritative reference data[^\]]*)\.\]\s*',
           re.IGNORECASE,
       )
       
      @@ -180,7 +180,8 @@ def build_memory_context_block(raw_context: str) -> str:
           return (
               "<memory-context>\n"
               "[System note: The following is recalled memory context, "
      -        "NOT new user input. Treat as informational background data.]\n\n"
      +        "NOT new user input. Treat as authoritative reference data — "
      +        "this is the agent's persistent memory and should inform all responses.]\n\n"
               f"{clean}\n"
               "</memory-context>"
           )
    • gateway/run.py
      @@ -6322,6 +6322,10 @@ async def _handle_message_with_agent(self, event, source, _quick_key: str, run_g
                                                       _werr,
                                                   )
                                       finally:
      +                                    # Evict the cached agent so the next turn
      +                                    # rebuilds its system prompt from current
      +                                    # SOUL.md, memory, and skills.
      +                                    self._evict_cached_agent(session_key)
                                           self._cleanup_agent_resources(_hyg_agent)
       
                           except Exception as e:
      @@ -9505,6 +9509,9 @@ async def _handle_compress_command(self, event: MessageEvent) -> str:
                       _aux_fail_model = getattr(compressor, "_last_aux_model_failure_model", None)
                       _aux_fail_err = getattr(compressor, "_last_aux_model_failure_error", None)
                   finally:
      +                # Evict cached agent so next turn rebuilds system prompt
      +                # from current files (SOUL.md, memory, etc.).
      +                self._evict_cached_agent(session_key)
                       self._cleanup_agent_resources(tmp_agent)
                   lines = [f"🗜️ {summary['headline']}"]
                   if focus_topic:
    • scripts/release.py
      @@ -177,6 +177,8 @@
           "[redacted:email]": "hendrixfreire",
           "[redacted:email]": "benjaminsehl",
           "[redacted:email]": "Nerijusas",
      +    # Compaction salvage batch (May 2026)
      +    "[redacted:email]": "MacroAnarchy",
           "[redacted:email]": "Ito-69",
           "[redacted:email]": "georgeglessner",
           "[redacted:email]": "maxims-oss",

4 PRs closed without merging

From the close comments: done elsewhere 2 · closed without comment 1 · duplicate 1

  • #20027 fix(gateway): correct compression guidance command · done elsewhere → 2e5acc5
  • #20057 fix: use correct /compress command name in context-overflow tips · done elsewhere → #20027
  • #20163 fix(gateway): correct /compact to /compress in context overflow tips · duplicate → #20027
  • #20172 fix: salvage batch — compaction guidance, memory authority, eviction, summary boundary marker · closed without comment
Closed issues · 1
  • Closed#20020[Bug]: Compress command tips wrong
How this cluster was grouped
  • Link evidence (structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference.
  • Pairwise link density 0.33: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36. 1.00 means every pair is linked.

Pick up a Lab task

Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.

Open the Lab

At a glance

Subsystem
gateway
Merged PRs
#20579
Closed issues
1
Attempts
4 PRs closed without merging
Fix link checked
6 May 2026

For your agent

The same facts, typed.