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.
npx agentmods add commands/ashlrai/ashlr-plugin/ashlr-settingsgit clone --depth 1 https://github.com/ashlrai/ashlr-pluginWrote 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/ashlrai/ashlr-plugin/ashlr-settings)<a href="https://agentmods.dev/commands/ashlrai/ashlr-plugin/ashlr-settings"><img src="https://agentmods.dev/badge/commands/ashlrai/ashlr-plugin/ashlr-settings.svg" alt="Measured on agentmods" 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 | $0.00013 | $0.00564 |
| Opus 5 | $0.00006 | $0.00282 |
| Sonnet 5 | $0.00003 | $0.00113 |
| Haiku 4.5 | $0.00001 | $0.00056 |
Grade B, and why
ashlr-settings scanned grade B with 1 finding 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 3d 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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
Settings for the ashlr-plugin live in `~/.claude/settings.json` under the `ashlr` key. All toggles default to `true` unless stated otherwise. How it starts
The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Settings for the ashlr-plugin live in ~/.claude/settings.json under the ashlr key. All toggles default to true unless stated otherwise.
{
"ashlr": {
"attribution": true,
"statusLine": true,
"statusLineSession": true,
"statusLineLifetime": true,
"statusLineTips": true,
"editBatchingNudge": true
}
}
| Key | Default | What it controls |
|---|---|---|
attribution |
true |
commit-attribution hook appends Assisted-By: ashlr-plugin to git commits |
statusLine |
true |
Master toggle for the status-line integration |
statusLineSession |
true |
Show this session's savings in the status line |
statusLineLifetime |
true |
Show lifetime savings in the status line |
statusLineTips |
true |
Rotate short tips in the status line |
editBatchingNudge |
true |
Nudge the agent to batch multiple edits to the same file |
toolRedirectwas retired in v1.18: the Read/Grep/Edit routing is handled by thepretooluse-*hooks and controlled viaASHLR_HOOK_MODE(redirect|nudge|off) or~/.ashlr/settings.json { "toolRedirect": false }for a full opt-out. The old~/.claude/settings.json { ashlr: { toolRedirect } }key is ignored.
Applying a change
Parse the user's request, read the current settings file with Read or ashlr__read, apply the change via Edit or ashlr__edit, and confirm the new value.
Changes to hook-driven toggles (attribution, editBatchingNudge) take effect on the next tool call. Changes to status-line toggles take effect on the next status-line refresh.
Status-line install
If the user hasn't installed the status line yet, the settings file won't have a statusLine.command entry. Run:
bun run ~/.claude/plugins/ashlr-plugin/scripts/install-status-line.ts
That writes a safe, idempotent entry into ~/.claude/settings.json pointing at scripts/savings-status-line.ts. A timestamped backup is made before any write.
If the user just asked a question
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.
- 3d ago First seen · 51 lines · 13 tokens per session scan B 3445b7b844d0
ashlr-settings is a command published in the GitHub repository ashlrai/ashlr-plugin (3 stars, last pushed 3d ago), licensed MIT. It adds 13 tokens to every session and 564 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
upgrade-webkit
Upgrade Bun's WebKit fork to the latest upstream version of WebKit.
dedupe
Find duplicate GitHub issues.
scriptwriter-draw
Draw a random chaos card from the 13-card deck — a plot-twist prompt the user can use as a scene seed, a basistext for an RRR cascade, or a riff for a room contribution.
specsync-create-spec
Create a new spec-sync module spec.
brain-ask
Search the Hamzaish brain — learnings, decisions, playbooks, product docs. Use for "what did we decide about X" / "have we seen this before" recall, or before re-deriving something. Returns ranked citations with snippets.
nimbus-embedding-routing
Hybrid 384/1536-dim embedding routing (Phase 5 T6 PR 3): PROSEHEAVYTYPES, EMBEDDINGDIMLOCAL/EMBEDDINGDIMOPENAI, the RoutingEmbeddingPipeline wrapper, dual-table search (vecitems384 + vecitems1536 via vectorSearchChunksDual), the V30 migration (1536-dim table + dim-aware delete triggers), the nimbus index reembed CLI +…