Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add iliaal/codesage/plugin install codesage-toolsWrote 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.
[](https://agentmods.dev/commands/iliaal/codesage/codesage-revalidate)<a href="https://agentmods.dev/commands/iliaal/codesage/codesage-revalidate"><img src="https://agentmods.dev/badge/commands/iliaal/codesage/codesage-revalidate/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/iliaal/codesage/codesage-revalidate"><img src="https://agentmods.dev/badge/commands/iliaal/codesage/codesage-revalidate.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00017 | $0.01881 |
| Opus 5.5 | $0.00007 | $0.00752 |
| Sonnet 5.5 | $0.00003 | $0.00376 |
| Haiku 4.5 | $0.00002 | $0.00188 |
Grade A, and why
codesage-revalidate 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 24d 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.
How it starts
The opening of the file, as written. The whole thing — 83 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Revalidate CodeSage findings
Review the owning feature again, apply the same evidence and identity gates as /codesage-review, and reconcile through codesage-review-state.
Parse and resolve
Require an absolute onboarded project path and exactly one selector:
--finding <id>: locate one finding under$PROJECT/.codesage/findings/*.json.
Every .codesage/... path below lives under the project, not the session's working directory; always write it as $PROJECT/.codesage/....
--feature <id>: select findings in one feature.--all: select across the project, grouped by feature.
--status defaults to open. --max-verify-findings defaults to 5 and caps new regression candidates sent to each feature verifier.
If no findings match, print the selector and available status counts, then stop. Warn before dispatch when the selection spans more than 50 findings or 20 features.
Prepare feature-local inputs
Use rev_$(date -u +%Y%m%dT%H%M%SZ) as RUN_ID. For each feature:
- Run
codesage-review-state inventory --project "$PROJECT" --feature <feature_id> --output <run-inventory.json>for fresh, complete feature metadata; do not use the budget-limited MCP list. If the CLI explicitly reports that this feature ID no longer exists, use the findings document's persistedentry_path,title,kind, andfeature_filesas a historical scope, recordmetadata_source: persisted-retired-feature, and disclose that it may not cover the current feature map. Other inventory errors fail this feature rather than silently falling back. If a retired legacy document lacks its file list, record a partial run and an unavailable scope; do not infer the slice from one finding. - Write the complete feature record under
$PROJECT/.codesage/reviews/<RUN_ID>/features/. Normalize persistedfeature_filestofileswhen using historical scope. Union target finding paths missing from that list as explicitcontextpaths so selected findings remain in the bounded plan, without pretending those paths are current mapped ownership. - Project only the targeted findings. Include ID, location, severity, category, title, summary, evidence, suggested fix, status, and optional
magnitudeandacknowledgementunchanged. Striphistory. Runcodesage-review-state sweep-acks --project <absolute-path>and exclude transferred source records from targets, directing explicit source-ID requests to their destination. Write their ID array to$PROJECT/.codesage/reviews/<RUN_ID>/targets/<feature_id>.json. - Collect existing entry and owned paths, save the requested path array, and call
mcp__codesage__assess_risk_batchin batches of at most 100 unique paths. Runcodesage-review-state check-risk --paths <requested-paths.json> --risk <response.json>for every batch before using scores. Truncation, missing or extra rows, duplicate paths, and invalid scores fail this check. Retry smaller batches or use CLIrisk-batch --jsonfrom the project; never synthesize a zero score. If complete coverage remains unavailable, mark the feature errored and the run partial. Write the complete batch-shaped result to$PROJECT/.codesage/reviews/<RUN_ID>/risk/<feature_id>.json. - Run
codesage-review-state changed-files --project "$PROJECT" --feature "$PROJECT/.codesage/reviews/$RUN_ID/features/<feature_id>.json" --target-ids "$PROJECT/.codesage/reviews/$RUN_ID/targets/<feature_id>.json" --output "$PROJECT/.codesage/reviews/$RUN_ID/changed/<feature_id>.json". The helper reads the feature's findings document and unions targeted finding paths with committed changes sincereviewed_at_shawhen present, staged, unstaged, and untracked slice paths. It uses project-relative, NUL-delimited Git output, excludes siblings of nested projects, and retains both rename endpoints. Without a prior SHA, it collects pending changes and target paths; outside Git it returns only the target paths. Collection errors and unavailable recorded commits fail the feature; never substitute an empty array. - Run
codesage-review-state plan-featurewith the feature, risk, and changed/target path files, passing--project "$PROJECT"so deleted files drop out of the plan instead of deadlocking coverage. Write$PROJECT/.codesage/reviews/<RUN_ID>/plans/<feature_id>.jsonand pass it to the reviewer asmust_read.
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.
- 24d ago Changed 1769ee9da9ba
- 1mo ago Changed 889f6c7e3f77
- 1mo ago Changed · +1 lines 5c502e6cb5ac
- 1mo ago First seen · 82 lines · 17 tokens per session scan A 802f1b13a7c8
codesage-revalidate is a command published in the GitHub repository iliaal/codesage (21 stars, last pushed yesterday), licensed MIT. It adds 17 tokens to every session and 1,881 once invoked, about $0.0001 per session on Opus 5.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-30.
Other commands, from other repositories
call-graph
Trace callers, callees, or paths using the call graph.
peek
Quickly find likely code locations without returning full code.
definition
Find where a symbol is defined in the codebase.
find
Find code using hybrid approach (semantic + grep).
status
Check if the codebase is indexed and ready for semantic search.
doctor
Diagnose the Repowise setup — install, API keys, index/store drift — and optionally repair it.