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 instructions/getpostern/postern/claude-mdgit clone --depth 1 https://github.com/getpostern/posternWhat 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.02158 | $0.02158 |
| Opus 5 | $0.01079 | $0.01079 |
| Sonnet 5 | $0.00432 | $0.00432 |
| Haiku 4.5 | $0.00216 | $0.00216 |
Grade A, and why
postern CLAUDE.md 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 2d 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 — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Postern — working notes for an agent in this repo
Neutral gateway for Postern (the Personal Context Gateway): connect the sectors of your life once, reach them from any agent through one surface. Read your life and act on it where the source allows; no cross-domain correlation. A faithful cache, not a derived store — the agent reasons; we authenticate, normalize, store, serve, and dispatch. Three properties decide ties: one place (one surface, one grant), lightning fast (reads from local cache in ms; actions add zero gateway overhead around the one unavoidable dispatch), harness-agnostic (swap the harness, keep the context, capabilities, permission and audit).
Build for the world, not one box. Every decision is for all the people who will run this. A real deployment with real accounts exists to verify a design against real data, never to decide one. When "right for this box" and "right for everyone" diverge, the holistic answer wins.
This file is for an agent working on the code. If you are setting a gateway up for someone, read setup-with-your-agent.md. If you are sending a patch, read CONTRIBUTING.md.
Gotchas
The things that are expensive to learn the hard way. Most were.
- Tests run ONLY against a
*_testdatabase. The*.db.test.tssuite issues realINSERT/DELETE. A run against a live application DB wiped ~700 finance rows on 2026-06-17. A fail-closed guard invitest.globalSetup.tsaborts unlessDATABASE_URLmatches/_test$/;PCI_TEST_DB=1is a full bypass of that guard and must never be set against a real database. Usenpm run test:db— it brings its own throwaway Postgres and cannot touch a running gateway. npm testneedsapps/webdeps installed — root vitest collects the Console's.test.tsxfiles but a root-only install does not install them. Withoutnpm ci --prefix apps/web(i.e.npm run setup) you get a wall of red suites and "Cannot find package 'react'". Never "fix" that by excludingapps/webfromvitest.config.ts: it drops real tests and makes a loud failure silent.- The vault master key lives in the container volume, NOT in a
./.pci/master.keyon the host. Backing up a host copy yields a tarball that fails at restore with a silentSecretAuthError. Extract the key from the running container. Neverdocker compose down -v— removing the volume orphans every stored credential. - Relative imports need
.jsextensions (ESM + NodeNext).npm run typecheckenforces it. amountis signed, negative = money out — sospending = amount < 0is the provider-agnostic predicate. Plaid is positive-out and gets negated on write; SimpleFIN passes through. Account balances follow the same rule (a liability owed is negative everywhere).available_balanceis left as each provider reports it.union:%is a reservedsource_object_idnamespace for dedup synthetics.applyRecordsfail-closed rejects any provider record that plants or tombstones one.- The loopback
Hostallowlist is the only authz on the admin/OAuth/Plaid routes. It is a same-origin/DNS-rebinding guard, not per-request auth. Theeraseconfirm token is a fat-finger guard, not auth either. The bearer-gated read mirror is intentionally separate.SECURITY.mdstates the whole boundary. - This project is Apache-2.0, so a GPL/AGPL/SSPL dependency poisons the distribution. Adding one is a licence violation, not a preference — check before you add a dep, and never resolve an audit finding by pulling in copyleft. One MPL-2.0 dependency (
ical.js) is fine and already recorded inTHIRD-PARTY-NOTICES.md. - Cloud MCP clients egress on port 443 only. A tunnel on any other port silently TCP-resets — the client will simply never connect and tell you nothing.
- A test that cannot fail is this repo's signature defect. Correct code behind a vacuous guard accounts for most of the blocking review findings in its history. The only reliable check is to run the mutation: break what the test guards and confirm it goes red.
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.
- 2d ago First seen · 69 lines · 2,158 tokens per session scan A d07ebe3c9c90
postern CLAUDE.md is an instructions file published in the GitHub repository getpostern/postern (1 stars, last pushed 22d ago), licensed Apache-2.0. It adds 2,158 tokens to every session, about $0.0108 per session on Opus 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-31.
Other instructions, from other repositories
moira AGENTS.md
Instructions for moira-mcp/moira, covering agents.md, what moira is, repository layout, build & run (fresh clone) and image: line and uncomment the build: block, then.
cortex-gateway AGENTS.md
Instructions for wellknownmcp/cortex-gateway, covering agents.md, what this is, verify the claims yourself, the demo authorization server builds independently and protected-resource metadata (rfc 9728).
ARR_MCP AGENTS.md
Instructions for GauranshMathur/ARR_MCP, covering agents.md, non-negotiables, researching a service, adding a service and tool design.
tooltrust-scanner CLAUDE.md
Instructions for AgentSafe-AI/tooltrust-scanner: Use the /browse skill from gstack for all web browsing. Never use mcpclaude-in-chrome tools.
ARR_MCP CLAUDE.md
Instructions for GauranshMathur/ARR_MCP, covering claude.md, build and run commands, code style guidelines, agent skills and issue tracker.
mcpelevator CLAUDE.md
Instructions for pacnpal/mcpelevator, covering commands, architecture, conventions, agent skills and issue tracker.