When headers=plain, table header text was emitted into <th> via a raw HTML path. User-controlled mainlabel content could therefore become executable HTML.
TableResultPrinter now applies output-context escaping before passing plain headers to the table renderer.The header value is not a structural token; it is display data. Sanitizing it at the sink is correct because the renderer owns the final HTML emission.
{
"cwe_ids": [
"CWE-79"
],
"github_reviewed": true,
"github_reviewed_at": "2026-09-18T16:40:36Z",
"nvd_published_at": null,
"severity": "MODERATE"
}