coldpass

simonw/strip-tags

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works · Linux / Luna: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/simonw--strip-tags.svg).

coding

Works

The recorded run passed on 2 setups.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyesyes

Linux / Haiku 5.5: yes · Oct 27, 2026 · 868072957a95 · claude-code / 2.1.310 (Claude Code)
Recorded operation: <guest-path> --first

Linux / Luna: yes · Oct 27, 2026 · 868072957a95 · codex / codex-cli 0.164.0
Recorded operation: /tmp/strip-tags-venv/bin/strip-tags

Does what it says
1 of 1 claims checked out
  • Pipe HTML into the tool to strip tags: Real input produced the expected result: Hello world

    Source: Pipe content into this tool to strip tags from it:

    Input: <p>Hello <b>world</b></p>

    Expected: Hello world

    Command: /tmp/strip-tags-venv/bin/strip-tags

    Observed: Hello world

MCP
No
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Abandoned
abandoned: last commit 605 days ago; 0 commits and 0 merged PRs in 90 days; 9 open issues, 1 open PRs; 12 of 21 recent threads got a maintainer reply, median first reply 11.8h; latest release 2025-02-28

Last commit Feb 28, 2025

Setup time
49 s
49 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Strip HTML tags from piped input: command completed successfully

    Source: README.md/Usage

    Input: <p>Hello <b>world</b></p>

    Expected: Hello world

    Command: /tmp/strip-tags-venv/bin/strip-tags

    Observed: Hello world

Evidence
README behavior checked
Agent interfaces
CLI
CLI

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.164.0 · Checked operation passed · Oct 27, 2026 on 868072957a95

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation <guest-path> .content --first

Agent-reported scope: Install strip-tags from its pinned source and strip HTML via the strip-tags CLI (selectors, --first, -t, -m, -r) and python -m strip_tags

Run details
run
simonw--strip-tags-claude-haiku-5-5-1793089405363202135
date
Oct 27, 2026
time to working
101.9s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.310 (Claude Code)
platform
linux
reported cost
$0.011239
Recorded source
https://github.com/simonw/strip-tags
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "868072957a9502a741b1ca947a992a988f58dc2e", "url": "https://github.com/simonw/strip-tags"}
Test version
readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2
revision
868072957a9502a741b1ca947a992a988f58dc2e
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks.

No problems traced to this repository code in these checks.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Piping HTML on stdin strips the tags: Real input produced the expected result: Hithere

    Source: Pipe content into this tool to strip tags from it:

    Input: <div><h1>Hi</h1><p>there</p></div>

    Expected: Hithere

    Command: <guest-path>

    Observed: Hithere

  • --first returns only the first matching element: Real input produced the expected result: First

    Source: To return just the first element on the page that matches one of the selectors, use `--first`:

    Input: .content with two matching divs and --first

    Expected: First only

    Command: <guest-path> .content --first

    Observed: First

  • -t keeps the markup for the named tag: Real input produced the expected result: <h1>Title</h1>

    Source: The `-t/--keep-tag` option can be passed multiple times to specify tags that should be kept.

    Input: -t h1 on a div with h1 and p

    Expected: h1 markup kept

    Command: <guest-path> -t h1

    Observed: <h1>Title</h1>Body text

  • --minify collapses whitespace: Real input produced the expected result: a b

    Source: To minify whitespace - reducing multiple space and tab characters to a single space, removing any remaining blank lines - add `-m` or `--minify`:

    Input: div with a run of spaces

    Expected: a b

    Command: <guest-path> -m

    Observed: a b

  • python -m strip_tags runs the tool: Real input produced the expected result: Hix

    Source: You can also run this command using `python -m` like this:

    Input: <h1>Hi</h1><p>x</p> on stdin

    Expected: Hix

    Command: <guest-path> -m strip_tags

    Observed: Hix

Examples

  • Repository test suite passes (CI test step): command completed successfully

    Source: .github/workflows/test.yml

    Input: python -m pytest

    Expected: 79 passed

    Command: <guest-path> -m pytest -q

    Observed: d and will be removed in Click 9.0. Use 'tempfile.TemporaryDirectory' or pytest's 'tmp_path' fixture with absolute paths instead. with runner.isolated_filesystem(): tests/test_strip_tags.py::test_not_ut8_encoding <guest-path> DeprecationWarning: 'isolated_filesystem' is deprecated and will be removed in Click 9.0. Use 'tempfile.TemporaryDirectory' or pytest's 'tmp_path' fixture with absolute paths instead. with runner.isolated_filesystem(): -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 79 passed, 53 warnings in 1.14s

  • Remove content of a selector before stripping: command completed successfully

    Source: README.md: To remove content contained by specific selectors

    Input: stdin with nav

    Expected: Hi

    Command: <guest-path> -r nav

    Observed: Hi

Local or hosted: local

What the agent did

Install strip-tags from its pinned source and strip HTML via the strip-tags CLI (selectors, --first, -t, -m, -r) and python -m strip_tags

cd <guest-path> && ls -la && cat README.md 2>/dev/null | head -150 && id -u && python3 --version && (git -C . rev-parse HEAD 2>&1 | head -1)
cd <guest-path> && cat setup.py && ls strip_tags tests .github/workflows && cat .github/workflows/*.yml | head -60 && ls .coldpass && python3 -m venv --help >/dev/null && echo VENV_OK
python3 -m venv <guest-path> && <guest-path> install -q --upgrade pip 2>&1 | tail -3; cd <guest-path> && <guest-path> install '.[test]' 2>&1 | tail -4; ls <guest-path> | grep -i strip
cd <guest-path> && <guest-path> -m pytest -q 2>&1 | tail -5; printf '<div class="content"><h1>Hello</h1><p>World <b>bold</b></p></div><nav>Menu</nav>' > <guest-path> && <guest-path> '.content' -i <guest-path>; echo "rc=$?"; cat <guest-path> | <guest-path> -r nav; echo "rc=$?"
cd <guest-path> && S=<guest-path>; printf '<div class="content"><h1>First</h1></div><div class="content"><h1>Second</h1></div>' | $S .content --first; echo "rc=$?"; printf '<div class="content"><h1>First</h1></div><div class="content"><h1>Second</h1></div>' | $S .content; echo "rc=$?"; printf '<div><h1>Title</h1><p>Body   text</p></div>' | $S -t h1; echo "rc=$?"; printf '<div>\n  <p>a    b</p>\n\n</div>' | $S -m | od -c | head; echo "rc=$?"; <guest-path> -m strip_tags --help | head -3
cd <guest-path> && grep -rniE "cron|schedul|while True|webhook|--once|--now|sleep" strip_tags/ ; echo "grep_rc=$?"; ls -la <guest-path> /inputs/ 2>&1 | head; cat strip_tags/__main__.py
cd <guest-path> && S=<guest-path> && W=<guest-path> && cat > claims.json <<EOF
[
{"kind":"claim","claim":"Piping HTML on stdin strips the tags","source":"Pipe content into this tool to strip tags from it:","input":"<div><h1>Hi</h1><p>there</p></div>","expected":"Hithere","probe_kind":"cli","argv":["$S"],"stdin":"<div><h1>Hi</h1><p>there</p></div>","expected_text":"Hithere","cwd":"$W"},
{"kind":"claim","claim":"--first returns only the first matching element","source":"To return just the first element on the page that matches one of the selectors, use \`--first\`:","input":".content with two matching divs and --first","expected":"First only","probe_kind":"cli","argv":["$S",".content","--first"],"stdin":"<div class=\"content\"><h1>First</h1></div><div class=\"content\"><h1>Second</h1></div>","expected_text":"First","cwd":"$W"},
{"kind":"claim","claim":"-t keeps the markup for the named tag","source":"The \`-t/--keep-tag\` option can be passed multiple times to specify tags that should be kept.","input":"-t h1 on a div with h1 and p","expected":"h1 markup kept","probe_kind":"cli","argv":["$S","-t","h1"],"stdin":"<div><h1>Title</h1><p>Body   text</p></div>","expected_text":"<h1>Title</h1>","cwd":"$W"},
{"kind":"claim","claim":"--minify collapses whitespace","source":"To minify whitespace - reducing multiple space and tab characters to a single space, removing any remaining blank lines - add \`-m\` or \`--minify\`:","input":"div with a run of spaces","expected":"a b","probe_kind":"cli","argv":["$S","-m"],"stdin":"<div>\n  <p>a    b</p>\n\n</div>","expected_text":"a b","cwd":"$W"},
{"kind":"claim","claim":"python -m strip_tags runs the tool","source":"You can also run this command using \`python -m\` like this:","input":"--help","expected":"usage line","probe_kind":"cli","argv":["<guest-path>","-m","strip_tags","--help"],"expected_text":"Usage: python -m strip_tags","cwd":"$W"}
]
EOF
cat > probe.json <<EOF
{"kind":"cli","argv":["$S",".content","--first"],"cwd":"$W","stdin":"<div class=\"content\"><h1>First</h1></div><div class=\"content\"><h1>Second</h1></div>","expected_text":"First"}
EOF
cat > examples.json <<EOF
[
{"kind":"example","claim":"Repository test suite passes (CI test step)","source":".github/workflows/test.yml","input":"python -m pytest","expected":"79 passed","argv":["<guest-path>","-m","pytest","-q"],"cwd":"$W","expected_text":"79 passed"},
{"kind":"example","claim":"Remove content of a selector before stripping","source":"README.md: To remove content contained by specific selectors","input":"stdin with nav","expected":"Hi","argv":["$S","-r","nav"],"stdin":"<div><h1>Hi</h1></div><nav>Menu</nav>","cwd":"$W","expected_text":"Hi"}
]
EOF
printf '{"detected":false,"reason":"Entry points inspected: strip_tags/cli.py and strip_tags/__main__.py and lib.py. The package has no scheduler, cron, loop, webhook, --once or --now option (grep found none). It runs once per invocation, so no product cycle exists.","checks":[]}\n' > cycles.json
for f in claims.json probe.json examples.json cycles.json; do python3 -c "import json,sys;json.load(open(sys.argv[1]));print(sys.argv[1],'ok')" $f; done; ls <guest-path>
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60; echo "rc=${PIPESTATUS[0]}"
cd <guest-path> && printf '<h1>Hi</h1><p>x</p>' | <guest-path> -m strip_tags; echo "rc=$?"; python3 - <<'EOF'
import json
p='<guest-path>'
c=json.load(open(p))
c[4]['input']='<h1>Hi</h1><p>x</p> on stdin'
c[4]['expected']='Hix'
c[4]['argv']=['<guest-path>','-m','strip_tags']
c[4]['stdin']='<h1>Hi</h1><p>x</p>'
c[4]['expected_text']='Hix'
json.dump(c,open(p,'w'),indent=1)
print('updated')
EOF
cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo "rc=$?"; python3 -I -c "import json;d=json.load(open('<guest-path>'));print(d.get('valid'),d.get('problems'));r=d.get('replay',{});print(r.get('status'));print([ (c['claim'][:30],c['verdict']) for c in r.get('details',{}).get('claims',[])])" 2>&1 | head -20
cd <guest-path> && python3 -I -c "
import json
d=json.load(open('<guest-path>'))
r=d['replay']
print(r['status'], r.get('details',{}).get('working'))
for k in ('claims','example_checks'):
  for c in r.get('details',{}).get(k,[]): print(k, c.get('verdict'), c.get('outcome'))
" ; cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Install strip-tags from its pinned source and strip HTML via the strip-tags CLI (selectors, --first, -t, -m, -r) and python -m strip_tags","operation_scope":"Linux guest, Python 3.12.3 venv at <guest-path>, pip install '.[test]' from the checkout as in .github/workflows/test.yml; no browser, no credentials, no network services","steps":["pip install '.[test]' (inside venv)","python -m pytest (79 passed)","strip-tags .content --first < HTML (prints First)","strip-tags -t h1 / -m / -r nav on stdin","python -m strip_tags on stdin (prints Hix)"],"deviations":["Used absolute venv path <guest-path> instead of bare strip-tags on PATH.","Checker lives at <guest-path>; /inputs/coldpass-preflight.py named in the task does not exist in this guest.","Workspace had no git metadata and was not re-fetched; it was already the source snapshot. Pip build left the usual egg-info/build artifacts from the checkout.","First python -m strip_tags --help claim was judged help-only by the checker and replaced with a stdin operation."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF
python3 -I -c "import json;json.load(open('<guest-path>'));print('report ok')"
Earlier attempts (1)

Luna

Native agent · Checked operation passed

Checked operation /tmp/strip-tags-venv/bin/strip-tags

Agent-reported scope: Strip HTML tags from piped standard input

Run details
run
simonw--strip-tags-gpt-6-luna-1793089531294995407
date
Oct 27, 2026
time to working
49.4s
product hosting / execution
Local command in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.164.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/simonw/strip-tags
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "868072957a9502a741b1ca947a992a988f58dc2e", "url": "https://github.com/simonw/strip-tags"}
Test version
readme-38e6b13f3b13804effb95797e3466b1a1334da7a232d897cbc8965867f802605
revision
868072957a9502a741b1ca947a992a988f58dc2e
Whose fault: not assigned · resolved

Safety: No problems traced to this repository code in these checks.

No problems traced to this repository code in these checks.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • Pipe HTML into the tool to strip tags: Real input produced the expected result: Hello world

    Source: Pipe content into this tool to strip tags from it:

    Input: <p>Hello <b>world</b></p>

    Expected: Hello world

    Command: /tmp/strip-tags-venv/bin/strip-tags

    Observed: Hello world

Examples

  • Strip HTML tags from piped input: command completed successfully

    Source: README.md/Usage

    Input: <p>Hello <b>world</b></p>

    Expected: Hello world

    Command: /tmp/strip-tags-venv/bin/strip-tags

    Observed: Hello world

Local or hosted: local

What the agent did

Strip HTML tags from piped standard input

pwd; rg --files -g 'README*' -g 'pyproject.toml' -g 'setup.py' -g 'setup.cfg' -g 'tox.ini' -g 'Makefile' -g '.github/**' | head -80; python3 --version; id -u; git status --short; git rev-parse --show-toplevel 2>/dev/null || true
ls -la; find . -maxdepth 3 -type f | head -100; cat README.md
python3 -m pip install --user .
python3 -m venv /tmp/strip-tags-venv && /tmp/strip-tags-venv/bin/pip install -e .
printf '<p>Hello <b>world</b></p>' | /tmp/strip-tags-venv/bin/strip-tags
mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"cli","argv":["/tmp/strip-tags-venv/bin/strip-tags"],"cwd":"<guest-path>","stdin":"<p>Hello <b>world</b></p>","expected_text":"Hello world"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"Pipe HTML into the tool to strip tags","source":"Pipe content into this tool to strip tags from it:","input":"<p>Hello <b>world</b></p>","expected":"Hello world","probe_kind":"cli","argv":["/tmp/strip-tags-venv/bin/strip-tags"],"stdin":"<p>Hello <b>world</b></p>","expected_text":"Hello world","cwd":"<guest-path>"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Strip HTML tags from piped input","source":"README.md/Usage","input":"<p>Hello <b>world</b></p>","expected":"Hello world","argv":["/tmp/strip-tags-venv/bin/strip-tags"],"cwd":"<guest-path>","stdin":"<p>Hello <b>world</b></p>","expected_text":"Hello world"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"README and entry points describe a one-shot HTML-to-text CLI; no scheduler, loop, webhook, or cycle trigger is documented.","checks":[]}
EOF
<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Strip HTML tags from piped standard input","operation_scope":"Local Python CLI, installed in a Python 3.12 virtual environment","steps":["Read README usage","Created venv and installed local package with pip install -e .","Piped HTML into strip-tags; observed Hello world","Validated and replayed probe, claim, example, and cycle evidence successfully"],"deviations":["Initial python3 -m pip install --user . was rejected by externally managed environment; venv installation succeeded."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF