NousResearch/hermes-agent

Matrix HTML sanitizer missing table tag allowlist

Cluster 45421 · gateway. Data as of

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

The short answer

0open issues
0open PRs
4items grouped
Known?
Yes. 4 related items grouped here, 1 issue already closed.
Fix event
A fix was merged to main in PR #45631. 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 bug was reported and multiple fixes proposed for table-related HTML tags being absent from the Matrix HTML sanitizer's ALLOWED_TAGS list, causing markdown tables to be stripped. The members consistently address this single missing-allowlist issue.

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.

  • #45631 fix(matrix): preserve markdown table structure

    merged to main

    files: gateway/platforms/matrix.py, tests/gateway/test_matrix.py

    Show the diff
    • gateway/platforms/matrix.py
      @@ -209,7 +209,7 @@ class _MatrixHtmlSanitizer(HTMLParser):
           _ALLOWED_TAGS = {
               "a", "b", "blockquote", "br", "code", "del", "em", "h1", "h2", "h3",
               "h4", "h5", "h6", "hr", "i", "li", "ol", "p", "pre", "s", "strike",
      -        "strong", "ul",
      +        "strong", "table", "tbody", "td", "th", "thead", "tr", "ul",
           }
           _VOID_TAGS = {"br", "hr"}
       
    • tests/gateway/test_matrix.py
      @@ -1090,6 +1090,24 @@ def test_matrix_markdown_preserves_code_fences(self):
               assert "<code" in result
               assert "print" in result
       
      +    def test_matrix_markdown_preserves_table_structure(self):
      +        table = "\n".join(
      +            [
      +                "| Item | Quantity |",
      +                "| --- | --- |",
      +                "| Apples | 4 |",
      +                "| Bread | 1 |",
      +            ]
      +        )
      +
      +        result = self.adapter._markdown_to_html(table)
      +
      +        assert "<table>" in result
      +        assert "<thead>" in result
      +        assert "<tbody>" in result
      +        assert "<th>Item</th>" in result
      +        assert "<td>Apples</td>" in result
      +
       
       # ---------------------------------------------------------------------------
       # Helper: display name extraction

2 PRs closed without merging

From the close comments: done elsewhere 1 · merged via another change 1

  • #45431 fix(matrix): preserve markdown table structure · merged via another change → #45631
  • #45530 fix: add missing HTML table tags to Matrix sanitizer allowlist · done elsewhere → #45631
Closed issues · 1
  • Closed#45421[Bug]: markdown tables stripped by _MatrixHtmlSanitizer — table tags missing from ALLOWED_TAGS
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.50: 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
#45631
Closed issues
1
Attempts
2 PRs closed without merging
Fix link checked
13 Jun 2026

For your agent

The same facts, typed.