trust

trust is a skill for Claude Code, Codex from foliveira/harmonia. It costs 40 tokens per session (2,449 once invoked), scanned C, original, MIT.

A human-approved setup command for recording consent to run a repository's configured coverage command. Coverage checks how much of the code is exercised by tests.

In plain words
What is it for?
Reviewing the exact coverage command, recording its hash and repository path, and allowing the configured coverage gate to run until that command changes.
Why use it?
It prevents an agent from silently approving a shell command that will run repeatedly in the repository.

Skill for Claude CodeCodex

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 harmonia plugin — 16 skills, 12 agents, 1 hook 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 skills/foliveira/harmonia/trust
Any agent
npx skills add foliveira/harmonia --skill trust
Clone the repo
git clone --depth 1 https://github.com/foliveira/harmonia

Made for: Claude Code, Codex.

Or install harmonia, the plugin that ships this one along with the rest of its 16 skills, 12 agents, 1 hook.

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 trust

README.md
[![agentmods](https://agentmods.dev/badge/skills/foliveira/harmonia/trust.svg)](https://agentmods.dev/skills/foliveira/harmonia/trust)
Your own site
<a href="https://agentmods.dev/skills/foliveira/harmonia/trust"><img src="https://agentmods.dev/badge/skills/foliveira/harmonia/trust.svg" alt="Measured on agentmods" height="20"></a>
Per session 40 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,449 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. 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.00040 $0.02449
Opus 5 $0.00020 $0.01224
Sonnet 5 $0.00008 $0.00490
Haiku 4.5 $0.00004 $0.00245

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

Security

Grade C, and why

trust scanned grade C 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 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.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

**Consent is keyed by the tree's resolved path.** A repository that moves or is renamed is a tree nobody has agreed to yet and is recorded again - and the other side of that is the sharpest thing to know before relying o
skills/trust/SKILL.md · 64 lines

How it starts

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

This is a human-invoked setup command. Agreeing to run a repository's shell command is a human act: no other skill or agent - flow explicitly, and /harmonia:onboard in particular - runs it or bash ${CLAUDE_PLUGIN_ROOT}/bin/trust.sh record on the developer's behalf. Onboarding proposes a coverage: value; this command is what makes it runnable, and only the developer types it.

Run the recorder against the repository the developer is in and surface its output verbatim:

bash ${CLAUDE_PLUGIN_ROOT}/bin/trust.sh record --repo .

It prints the exact command it is about to make executable, on its own line and byte for byte, before writing. Read that line and decide. It is a shell command the coverage gate will run from the repository root at every implement round, at review and in the quick lane, so read it the way you would read a Makefile target or a package.json script.

Consent covers that string, and no file. The record holds the tree's path, the sha256 of the command exactly as the gate will run it, and the date. Change one byte of the command and the gate refuses until a human agrees again. Change anything else and it does not.

So pointing coverage: at a script means trusting that script's contents on every future run, including contents that arrive after you agreed. sh .harmonia/cov.sh && echo cov.xml is consent to run whatever .harmonia/cov.sh holds at the moment the gate runs it - and a repository you clone can change that script with an ordinary commit, with the coverage: line you read left exactly as you read it. A git pull, an npm ci and a rebuilt virtualenv all do the same thing without a commit. Nothing in the gate looks at any file's contents; only the string is watched.

Earlier versions of this file promised more: that the record covered the contents of the scripts the command ran, so a rewritten script refused. The promise could not be kept and is withdrawn rather than restated. .harmonia/cov.sh's whole job is to run the repository's test suite - hundreds of files no record ever covered - so the digest stopped a rewrite of one file and nothing behind it, and getting past it took no attacker and no skill.

What you do get is that nothing runs unread. The exact string was printed and agreed to; it is short enough and plain enough to read; its first word per part is the program; a word where a file belongs is a file rather than an option; no word reaches through a .. path component; and any edit to it stops the gate until a human agrees again.

Most commands cannot be recorded, and that is the point. The recorder refuses the value outright, with the offending word and the remedy, while you are there to read it: a value nobody can read honestly is worse than one nobody can run.

interpreters: sh bash dash python python3 node
inert: echo true
bytes: 1024
words-per-part: 64
byte-class: 0x20-0x7e

That card is one block carried identically by this file, SECURITY.md, skills/onboard/SKILL.md, skills/onboard/CERTIFY.md and bin/trust.sh, and checked against what the recorder admits. Around it: a recordable value is bytes from the card's byte class, up to the byte cap, split by ;, &&, || and | into parts of at most the word cap, every word made of letters, digits and _ . , : = + @ / - (or that inside one matching pair of quotes) and none of them carrying a .. path component - --out=../x and a..b are ordinary words and are fine; ../x and src/../lib are not. Every part starts with one of:

  • an interpreter from the card, bare and exact - sh, not /bin/sh and not ./sh. Its next word is the script it runs, must carry a /, must not begin with - or +, and must not sit under /dev/ or /proc/ (sh /dev/stdin hands the interpreter the pipe beside it instead of a file). Later words go to that script.
  • cd <dir> - first part only, one operand, followed by &&, <dir> relative. An absolute one is refused because it is the one cd shape decidable from the string alone and costs a single rule; where a relative name leads is a fact about your tree, and nothing here asks the tree anything.
  • an inert word from the card.

Read the full file on GitHub · 64 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 · 64 lines · 40 tokens per session scan C 2262bee519bd

Subscribe to this mod's changes

trust is a skill published in the GitHub repository foliveira/harmonia (2 stars, last pushed 19d ago), licensed MIT. It adds 40 tokens to every session and 2,449 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

todos

This chat has a shared, live TODO plan — your tasks for the conversation, which the user also edits. Read this skill and reach for the todo tools whenever a request takes more than a couple of steps. It covers the plan model (group = task, items = its steps; loose items are the user's lane), how to work it: propose…

JetBrains/thinkrail · 127 tokens

writing-workflow-skills

Use when adding a new workflow skill to pi-thinkrail-workflow, changing an existing workflow skill's role, trigger, handoff, or structure, or checking a workflow skill against the workflow system's rules. Not for authoring general-purpose skills outside this package.

JetBrains/thinkrail · 60 tokens

clarify

Adaptive requirements clarification with auto-depth routing. Shallow (Q&A) for simple tasks, Deep (exploration + DRAFT + PLAN) for complex ones. Escalates automatically when ambiguity persists.

mag123c/toktrack · 43 tokens

writing-specs

Use when a workflow step drafts or revises a spec artifact — a goal-and-requirements, an architecture, or a module SPEC — or when a workflow skill names it at such a step. The shared quality bar for specs — not a workflow, nothing to execute.

JetBrains/thinkrail · 59 tokens

ai-ml-development

AI and machine learning development with PyTorch, TensorFlow, and LLM integration. Use when building ML models, training pipelines, fine-tuning LLMs, or implementing AI features.

travisjneuman/.claude · 43 tokens

authentication-patterns

OAuth 2.0, JWT, SSO, MFA, NextAuth/Clerk/Supabase Auth implementation patterns.

travisjneuman/.claude · 28 tokens