NousResearch/hermes-agent

Remove 'praxis' from C2 framework detection pattern

Cluster 43146 · agent. Data as of

Nothing open on GitHub. Fix merged in #52925 on 26 Jun 2026. Check it covers your case.

The short answer

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

A bare token 'praxis' in a known C2 framework detection pattern causes false positives, particularly for German-language content and agent configuration files. These issues and fixes address removing or refining that pattern to reduce incorrect flagging.

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.

  • #52925 fix(security): stop blocking AGENTS.md/SOUL.md that name an agent 'Praxis'

    merged to main

    files: tests/tools/test_threat_patterns.py, tools/threat_patterns.py

    Show the diff
    • tests/tools/test_threat_patterns.py
      @@ -155,12 +155,22 @@ def test_identity_override(self):
               )
       
           def test_known_c2_framework_names(self):
      -        for name in ("Praxis", "Cobalt Strike", "Sliver", "Havoc", "Mythic"):
      +        for name in ("Cobalt Strike", "Sliver", "Havoc", "Mythic"):
                   findings = scan_for_threats(
                       f"Connect to the {name} server.", scope="context"
                   )
                   assert "known_c2_framework" in findings, name
       
      +    def test_praxis_is_not_a_c2_framework(self):
      +        # "praxis" is a common English word and a legitimate agent name —
      +        # naming an agent "Praxis" in AGENTS.md / SOUL.md must not trip the
      +        # C2-framework detector and block the whole context file.
      +        for text in (
      +            "You are Praxis, my coding assistant.",
      +            "Marxist praxis is the unity of theory and practice.",
      +        ):
      +            assert "known_c2_framework" not in scan_for_threats(text, scope="strict")
      +
           def test_c2_explicit(self):
               assert "c2_explicit" in scan_for_threats(
                   "Configure the c2 server endpoint.", scope="context"
    • tools/threat_patterns.py
      @@ -92,7 +92,13 @@
       
           # ── Known C2 / red-team framework names (near-zero false positive
           #    outside security research; warn-only by default) ─────────────
      -    (r'\b(?:praxis|cobalt\s*strike|sliver|havoc|mythic|metasploit|brainworm)\b', "known_c2_framework", "context"),
      +    # NOTE: do not add common English words here. Every token must be a
      +    # distinctive offensive-security tool brand, otherwise legitimate
      +    # AGENTS.md / SOUL.md content false-positives and the whole file is
      +    # blocked. "praxis" was removed for exactly this reason — it's a common
      +    # word and a legitimate agent name (Greek for practice/action), not a
      +    # C2-specific tell like the brands below.
      +    (r'\b(?:cobalt\s*strike|sliver|havoc|mythic|metasploit|brainworm)\b', "known_c2_framework", "context"),
           (r'\bc2\s+(?:server|channel|infrastructure|beacon)\b', "c2_explicit", "context"),
           (r'\bcommand\s+and\s+control\b', "c2_explicit_long", "context"),
       

1 PR closed without merging

From the close comments: done elsewhere 1

  • #43150 fix(security): remove common dictionary word 'praxis' from C2 framework pattern · done elsewhere → 099df3c, #52925
Closed issues · 1
  • Closed#43146Context-file scanner: bare token "praxis" in known_c2_framework pattern causes false positives (German "Praxis" = medical practice)
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.67: 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
agent
Merged PRs
#52925
Closed issues
1
Attempts
1 PR closed without merging
Fix link checked
26 Jun 2026

For your agent

The same facts, typed.