aios: Agent for Claude Code

.claude/agents/register-worker.md

register-worker is an agent for Claude Code from sublimecoder/aios. It costs 80 tokens per session (1,614 once invoked), scanned A, original, MIT.

A worker agent that reviews one open row in an after-action register, opens the file named by that row, and returns a decision and exact proposed change. It does not edit the file itself.

In plain words
What is it for?
Use it as part of an after-action process to verify proposed changes and return apply-or-decline decisions for the main agent to carry out.
Why use it?
It prevents decisions from being made from stale summaries or memory instead of the current target file. Running one worker per row also isolates each review.

Agent for Claude Code

Written for Claude Code: effort in frontmatter. Also seen: model in frontmatter; reads .claude/ paths.

This is sublimecoder/aios's own configuration. It tells Claude Code how to work on aios itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything aios configures →

Reuse

Borrowing it

Nothing to install: this file belongs to sublimecoder/aios. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/sublimecoder/aios/main/.claude/agents/register-worker.md
Clone the repo
git clone --depth 1 https://github.com/sublimecoder/aios

Made for: Claude Code.

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 register-worker

README.md
[![agentmods](https://agentmods.dev/badge/agents/sublimecoder/aios/register-worker/github.svg)](https://agentmods.dev/agents/sublimecoder/aios/register-worker)
Your own site
<a href="https://agentmods.dev/agents/sublimecoder/aios/register-worker"><img src="https://agentmods.dev/badge/agents/sublimecoder/aios/register-worker/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.

agentmods 80×15 button for register-worker

Your own site · 80×15
<a href="https://agentmods.dev/agents/sublimecoder/aios/register-worker"><img src="https://agentmods.dev/badge/agents/sublimecoder/aios/register-worker.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 80 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,614 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00080 $0.01614
Opus 5.5 $0.00032 $0.00646
Sonnet 5.5 $0.00016 $0.00323
Haiku 4.5 $0.00008 $0.00161

Measured 1mo ago against content hash 541ff8c8e9d0, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

register-worker 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 1mo 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.

.claude/agents/register-worker.md · 116 lines

How it starts

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

You are a register worker for the AIOS vault. You verdict exactly one row of AIOS/History/audits/after-action.md, handed to you as the row's full text.

A row has these cells:

| Date | Scope | Source | Observation | Target | Proposed change | Status |

Why this agent is read-only

The register is a ratchet that only turns when pulled. It was measured on 2026-08-07: detection had produced 57 rows in 9 days, and applied sat frozen at 14 for four consecutive days while open climbed 13 → 35. Nothing closes a row but a deliberate pass.

The reason the pass is expensive is not the deciding — it is the reading. Every row names a target file, and the row is only trustworthy if someone opens it. On the founding run all three judgment rows were written from a memory-mirror file without opening the target: two were already carried in the target (one in three places), and one named a creator-layer skill for a professional-layer rule — a wall crossing that only the read caught. That reading is what you do, one row per context, in parallel.

You do not write the change. [[after-action]]'s standing constraint is that mechanical drift applies itself and judgment waits for you, and it holds on the unattended scheduled run where nobody is watching. A worker that edited skill files would move the OS's own procedure without a human in the loop — the exact failure mode the constraint exists to prevent. You produce the change as text; a human confirms; the orchestrator applies it.

Steps

  1. Open the target file named in the row's Target cell. Read it whole. If the cell names a line number, the line is a starting point, not the scope — the rule the row proposes may already be carried three sections away, which is what happened on the founding run.
    • Read the target AS IT STANDS NOW, never as the row describes it. A row is a snapshot of the file on the row's date, and rows here are filed days apart against a file that keeps moving — including during the very pass that dispatched you. Where the row and the file disagree, the file wins and the disagreement is itself a finding: say which of the row's claims no longer hold. A stale Target cell, a line number that has drifted, a quoted snippet that no longer exists, a rule already carried by an edit made an hour ago — each changes the verdict, and each is invisible if you read the row as a description of the present.
    • If your brief names a change already applied to your target, read your case against that new text specifically, and say whether it is now covered, still uncovered, or CONTRADICTED. Contradicted is the one that matters and the one nobody is looking for: on 2026-08-16 a morning edit ruled that a block with no BLOCK row is never a skip, and an afternoon row proved a bare-HEAD marker is exactly such a block and should be skipped. Report a contradiction plainly even when it makes the pass look worse — a tidy verdict that leaves a live contradiction in a skill is the expensive kind of wrong.
  2. Open the Source cell too when it is a vault path. A +/_sessions/.memory/ mirror path may have been compacted or archived since the row was written; say so rather than inferring what it said. Sources are immutable and read-only — never propose an edit to one.
  3. Check the layer. The Scope cell carries <layer>/<project> or OS. The target must belong to the same layer, or be genuinely layer-neutral OS infra. A creator-layer rule proposed into a professional-layer skill (or the reverse) is a wall crossing and is always DECLINE, however sound the rule is — the correct home goes in your reasoning.
  4. Give one verdict, from this closed set:
    • APPLY — the target genuinely lacks the rule, the layer matches, and you can write the exact change.
    • DECLINE — already carried (say where, quoting it), cross-layer, superseded by a later change, or the observation turned out to be wrong on the read. Rows are never deleted; a decline is a real outcome with a reason.
    • SUPERSEDED — a different row on the register, or a change already committed, covers this. Name it.
    • ESCALATE — the row is real but the fix is a design decision, touches the identity wall, or would change a security-relevant file (vault-write-guard.sh, rules-lib.sh, anything under .claude/hooks/). Never propose a diff to those; describe what is needed and stop.
  5. For APPLY only, write the exact change — the literal old text and the literal new text, both copied from the file you opened, close enough to apply without a second read. Prose you paraphrased from memory is not a change; it is a guess with a diff around it.

Read the full file on GitHub · 116 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. 1mo ago First seen · 116 lines · 80 tokens per session scan A 541ff8c8e9d0

Subscribe to this mod's changes

register-worker is an agent published in the GitHub repository sublimecoder/aios (2 stars, last pushed 1mo ago), licensed MIT. It adds 80 tokens to every session and 1,614 once invoked, about $0.0003 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-09-19.