Terminal-Bench 2.1terminalPythonHTMLJavaScript
Remove JavaScript from HTML safely
Implement an in-place HTML sanitizer that removes executable JavaScript while preserving legitimate structure, content, attributes, and formatting.
filter-js-from-html
Normalized profile
What this task asks for
Implement an in-place HTML sanitizer that removes executable JavaScript while preserving legitimate structure, content, attributes, and formatting. Accept the HTML path as argv[1]. Modify the source file in place. Remove all executable JavaScript. Preserve harmless HTML and avoid formatting changes beyond parser normalization.
Intent
- security remediation
- feature implementation
Work surfaces
- HTML parser
- sanitization boundary
Technology
- HTML
- JavaScript
- XSS
Expected artifacts
- /app/filter.py
What makes it difficult
- security-sensitive or adversarial behavior
- strict behavioral compatibility or exact-output validation
- specialized algorithmic or domain reasoning
- cross-language or cross-format integration
Published evidence
Model × harness outcomes
Counts are tied to these exact configurations. Harnesses are not treated as equivalent across benchmarks.
- Models
- 13
- Configurations
- 20
- Trials
- 100
Showing 20 of 20 configurations
| Model | Harness | Effort | Result | Passes |
|---|---|---|---|---|
| claude-fable-5anthropic · 2026-06-07 | claude-code2.1.167 | xhigh | No passes | 0/5 |
| claude-fable-5anthropic · 2026-06-05 | terminus-22.0.0 | high | No passes | 0/5 |
| claude-opus-4-7anthropic · 2026-05-01 | claude-code2.1.123 | max | No passes | 0/5 |
| claude-opus-4-7anthropic · 2026-05-01 | terminus-22.0.0 | max | No passes1 errors | 0/5 |
| claude-opus-4-8anthropic · 2026-07-09 | claude-code2.1.205 | high | Mixed | 1/5 |
| claude-sonnet-5anthropic · 2026-07-09 | claude-code2.1.205 | high | No passes | 0/5 |
| gemini-3-pro-previewgemini · 2026-05-01 | gemini-cli0.40.0 | high | No passes | 0/5 |
| gemini-3-pro-previewgemini · 2026-05-01 | terminus-22.0.0 | high | No passes | 0/5 |
| gemini-3.1-pro-previewgemini · 2026-05-05 | gemini-cli0.40.0 | high | No passes | 0/5 |
| gemini-3.1-pro-previewgemini · 2026-05-05 | terminus-22.0.0 | high | No passes | 0/5 |
| glm-5.1zai · 2026-05-01 | claude-code2.1.123 | max | No passes1 errors | 0/5 |
| gpt-5.5openai · 2026-05-01 | codex0.125.0 | xhigh | No passes | 0/5 |
| gpt-5.5openai · 2026-05-01 | terminus-22.0.0 | xhigh | No passes | 0/5 |
| gpt-5.6-lunaopenai · 2026-07-10 | codex0.144.0 | max | No passes | 0/5 |
| gpt-5.6-lunaopenai · 2026-07-11 | codex0.144.1 | max | No passes | 0/5 |
| gpt-5.6-solopenai · 2026-07-10 | codex0.144.0 | max | No passes | 0/5 |
| gpt-5.6-terraopenai · 2026-07-10 | codex0.144.0 | max | No passes | 0/5 |
| gpt-5.6-terraopenai · 2026-07-11 | codex0.144.1 | max | No passes | 0/5 |
| grok-4.5cursor · 2026-07-09 | cursor-cli2026.07.08-0c04a8a | default | Mixed | 2/5 |
| muse-spark-1.1openai · 2026-07-09 | mini-swe-agent2.4.5 | xhigh | No passes | 0/5 |