remit — agent-skill trust layer

Remit

remit · rɪˈmɪt · n. the scope of someone's authority.

least privilege for agent skills

Every skill declares its scope, is observed in a sandbox when available, and can be blocked at load if it drifts.

$npx @remitlabs/cli@latest start

free public beta · Node 22.5+ · no account · runs locally

static 64 high-signal rules — secret paths, curl-pipe-sh, reverse shells, hidden instructions
canary boxed when Docker or Podman is present — disposable container, fake secrets, strace + network proxy
revoke signed feed, daily sync — revoked digests are blocked at load; hand-installed copies are surfaced

A skill vouches for itself. Nothing checks the maths.

Today, a skill's trust story is prose: a description, some stars, maybe a README skim. Nothing runs it in a box before your agent loads it. Nothing watches what it does after. Nothing revokes it when a maintainer turns hostile at 2am — so you read SKILL.md twice and install anyway, hoping. The same "summarize notes" skill can ship "curl … | sh" or quietly read ~/.ssh: our detection corpus keeps specimens of exactly that, and they fool a human skim.

vouching a description in prose
run-up nothing proves the claim
bad day installed forever

The loop, sources to kill-switch

SOURCES skills.sh index GitHub repos agent dirs (4) skillctl create INGEST SKILL.md scripts metadata sha256 STATIC SCAN 64 high-signal rules DECLARED REMIT read, write, net, exec CANARY SANDBOX observer-first, fake secrets strace and net proxy SCORE findings vs declared remit coverage, confidence allow, review, deny INSTALL gated, lockfile sha256 RUNTIME MCP router, load on demand hook-guard, update diffs SIGNED FEED Ed25519, daily sync review / deny, park + evidence receipt revoked digest blocked at load, hand-installed copies surfaced

shipped static scan, canary receipts, signed feed + daily sync, MCP router, hook-guard (observe), lockfile rug-pull alerts, fleet dashboard — open boundaries canary containment is observer-first (egress enforcement only with an allowlist), and team identity is not built. A receipt is one observed run, not a safety guarantee.

How existing skills are handled

audit

Point skillctl audit at the skill dirs your agents already use — Claude Code, Codex, Cursor and friends. Every skill gets static findings; when Docker or Podman is available, a canary diff too. 123 skills, 4 agent dirs, 114 duplicate registrations found, measured on the machine this was built on.

install

Marketplace search (skills.sh + GitHub) funnels installs through one gate: clone, scan, policy, digest — before files ever land. CLI and marketplace installs share the same decision.

update

A lockfile pins every skill's sha256. If a maintainer re-publishes a skill you installed, update time runs a semantic diff — changed behaviour is flagged, never silently adopted.

revoke

The MCP router loads skills on demand (~150 tokens vs 15,238 of eager context, measured). hook-guard watches live sessions against network allow-lists, and the Ed25519 feed syncs daily: revoked digests are blocked by the router and feed. Remit-home copies are removed; hand-installed files get parked with a removal note, never silently touched.

Why a store of scanners isn't this

neutral

Not a marketplace with inventory to protect, not an agent selling you its own skills. Remit is the evidence layer under whatever supply chain your agent already uses.

receipts

Every verdict ships with its evidence: the rule hits, the canary diff when it ran, the pinned digest, and the signed-feed status. You can re-run the proof yourself — trust here is verifiable, not asked for.

deadline

Security without a kill switch is theater. The signed feed gives every install a clock: a revoked digest is blocked at load time, herd-wide, on the next daily sync.

local

Index, scanner and sandbox detonations run on your machine; the fleet API self-hosts or embeds. No cloud round-trip needed for a trust decision, and the core works offline.

What this does not prove

A finding is a rule match, not proof of intent. A canary receipt is one observed run in a container, not a guarantee that a skill is safe. Static coverage can be partial; compiled or encrypted files are blind spots. The canary is observer-first by default — it enforces egress only when you pass an allowlist. Remit is defense in depth, not a clean bill of health.

Run npx @remitlabs/cli@latest start and judge the evidence yourself. The output tells you which layers ran and what they could not see.