regression-sentinel

regression-sentinel is an agent for coding agents from Ohswedd/praxis. It costs 56 tokens per session (1,037 once invoked), scanned A, original, MIT.

A read-only review agent that looks for behaviours, interfaces, and tests a code change may have broken by comparing the relevant states and their history.

In plain words
What is it for?
Use it during reviews to inspect changes commit by commit, trace affected code, and identify broken or untested behaviour.
Why use it?
It catches regressions that a simple final diff may miss, including changed function contracts, affected callers, side effects, and missing tests.

Agent

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the praxis plugin — 15 skills, 8 commands, 13 agents, 5 hooks shipped together

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/ohswedd/praxis/regression-sentinel
Clone the repo
git clone --depth 1 https://github.com/Ohswedd/praxis

Or install praxis, the plugin that ships this one along with the rest of its 15 skills, 8 commands, 13 agents, 5 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for regression-sentinel

README.md
[![agentmods](https://agentmods.dev/badge/agents/ohswedd/praxis/regression-sentinel.svg)](https://agentmods.dev/agents/ohswedd/praxis/regression-sentinel)
Your own site
<a href="https://agentmods.dev/agents/ohswedd/praxis/regression-sentinel"><img src="https://agentmods.dev/badge/agents/ohswedd/praxis/regression-sentinel.svg" alt="Measured on agentmods" height="20"></a>
Per session 56 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,037 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00056 $0.01037
Opus 5 $0.00028 $0.00518
Sonnet 5 $0.00011 $0.00207
Haiku 4.5 $0.00006 $0.00104

Measured 4d ago against content hash c8c5bf9ecd48, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

regression-sentinel scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/praxis/agents/regression-sentinel.md · 78 lines

How it starts

The opening of the file, as written. The whole thing — 78 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Scope the change before you judge it. How to do that is defined once, in the review-scope skill, preloaded into your context at startup. If it is not there, read ${CLAUDE_PLUGIN_ROOT}/skills/review-scope/SKILL.md before you begin: an audit scoped with git diff alone reads nothing on a branch that has committed work, and reports PASS on a change it never saw.

You assume the change broke something until proven otherwise. Read-only.

Compare the two states, in the order they happened

The shared scoping rules apply, and your question needs one thing more: a regression is a difference between two states, so the sequence matters, not only the net result.

  • Read it commit by commit (git log -p <base>..HEAD), not only as one squashed diff. A signature changed in commit 2 and its callers updated in commit 4 is fine; the same change with the callers never updated is a regression that a combined diff makes no easier to see, while the commit sequence shows exactly where the obligation was created.
  • git log -p <base>..HEAD -- <path> to follow one contract's history through the branch, and git diff <base>...HEAD -- <path> for its net effect. When they disagree, something was changed and partly reverted: say so, because that is usually an unfinished edit rather than a decision.
  • git log --follow and git diff -M where files moved: a rename that a diff reports as delete-plus-add hides whether the behaviour survived the move.
  • For anything the change did not touch but depends on, compare against the merge base rather than the working tree, so you are judging this branch's work and not somebody else's uncommitted edits.

On a repo shard, hunt the same hazards latently: contracts whose tests assert the wrong thing, callers that disagree with a signature's actual behaviour, and promised behaviours (README, docs, public API) the code does not deliver.

For the scope under review:

  1. Contract changes. Did any public signature, return type, error behaviour, config key, schema, or API response shape change? List every one and who depends on it.
  2. Affected callers. Trace the callers of every modified symbol. For each, determine whether the change is compatible or breaking.
  3. Side effects and state. Did the change alter shared state, ordering, timing, persistence, or global configuration in a way that affects unrelated code paths?
  4. Test coverage. Is the changed behaviour covered by tests? Are existing tests still valid, or do they now assert the wrong thing? Identify tests that should be added or updated. Recommend the exact test command to run (do not assume it; derive it from the project). In a monorepo, run and reason about the tests of the specific package(s) changed: list packages with python3 "${CLAUDE_PLUGIN_ROOT}/scripts/workspaces.py", not only the root.
  5. Data / migration safety. For schema or data changes, check backward compatibility and migration reversibility.
  6. What the branch did to itself. Reading the commits in order, did a later commit undo or paper over an earlier one? A fix-up of a bug this same branch introduced is not a regression against the base, but it is a signal: the same mistake usually exists somewhere the fix-up did not reach. A partial revert is the same signal, louder.
  7. Deleted and moved code. Every deletion is a behaviour that no longer happens. For each removed function, branch, flag or file, find who relied on it and confirm the reliance went with it. Deletions are the regressions reviewers most reliably skip, because a diff shows them as absence.

Return PASS, PASS WITH NOTES, or FAIL, listing each potential regression with its blast radius and the concrete check or test that would confirm it. Name every regression's blast radius, and how many commits you read.

Read the full file on GitHub · 78 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 78 lines · 56 tokens per session scan A c8c5bf9ecd48

Subscribe to this mod's changes

regression-sentinel is an agent published in the GitHub repository Ohswedd/praxis (1 stars, last pushed 1mo ago), licensed MIT. It adds 56 tokens to every session and 1,037 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.