Work

Boundary

The boundary

An agent gets near everything I know, but it cannot see what it must not.

THE VAULT ONE REPO AGENT SESSION OTHER REPO CONTEXT CONTEXT SCOPE SLICE SCOPE SLICE CLIENTS COMMERCIAL CREDENTIALS MOUNT BOUNDARY PATH, NOT PERMISSION THE VAULT ONE REPO AGENT SESSION OTHER REPO CONTEXT CONTEXT SCOPE SLICE SCOPE SLICE CLIENTS COMMERCIAL CREDENTIALS MOUNT BOUNDARY PATH, NOT PERMISSION

Problem

I run agent sessions every day, near a knowledge base that holds information that is not mine to leak. By default, a coding agent can read the full directory in which you open it. A credential, a price, or a private note can go into a session transcript, a commit, or a model’s context. The words “be careful” are not a control.

I spent eight years in behavioral-health operations. In that field, a record in the wrong place causes serious harm. I do not run my own work on good intentions.

System

The knowledge base is an Obsidian vault in one git repository. It is the knowledge layer for each other system here: strategy, projects, people, commercial terms, credentials, synthesis. It keeps me organized, and it gives each agent session its context.

Agent sessions in other repositories never get that repository. They mount exactly two directories: a shared context layer and the single slice for their scope. All other paths are unreachable by construction, not by permission. A session that works on the tool directory cannot address a client folder. The path is not in its world.

A pre-commit hook controls what can enter those mountable directories. It is not a rule that I must remember. The hook fails the commit on money, compensation, credentials, and infrastructure resource IDs. It also makes sure that the mountable set is self-contained, so a mounted file cannot point to a file that the session cannot open. If a machine cannot make sure that content is safe, I delete the content and do not keep it on trust.

The trade is real. The mounted slice is smaller than what I know, so a session sometimes lacks context that I have. That is the correct direction for a failure.

What runs today

Each agent session in each other repository runs against a mounted slice. That includes client builds, the NoCodeWorkflows content pipeline, and this site. The hook became the pre-commit gate in June 2026, and no session bypassed it since then. When the hook fires, the commit fails until the file changes.

The artifact

The gate is a hook, not a checklist. The commit is what fails, not me.

agent session — .claude/settings.json
$ cat .claude/settings.json{  "permissions": {    "additionalDirectories": [      "/Users/mattbastar/Developer/vault-hub/context",      "/Users/mattbastar/Developer/vault-hub/company/initiatives/clipbase/context"    ]  }} what the session cannot see$ ls -F ~/Developer/vault-hub_archive/_meta/2026-06-11-operating-model.canvasAGENTS.mdCLAUDE.mdclients/company/context/CONVENTIONS.mdinternal-systems/knowledge/people/personal/skills-lock.jsonUSER.mdWORKSPACE.md $ find ~/Developer/vault-hub -type d -not -path '*/.*' | wc -l     402

The session's whole world is two paths. The repository behind them holds 402 directories: clients, commercial terms, people. None of them is addressable from inside the session. They are not blocked. They are absent.

vault-hub — .git/hooks/pre-commit
$ git add company/initiatives/main-site/context/STATUS.md$ .git/hooks/pre-commit; echo "EXIT: $?"27:- **Sponsor placement inquiry (2026-08-13):** first slot quoted at $750/mo — awaiting reply.context-lint: company/initiatives/main-site/context/STATUS.md: currency amount in mountable treeEXIT: 1 same file — value moved to company/offers.md (unmounted)27:- **Sponsor placement inquiry (2026-08-13):** first slot quoted — terms operator-side in company/offers.md; awaiting reply.$ git add company/initiatives/main-site/context/STATUS.md company/offers.md$ .git/hooks/pre-commit; echo "EXIT: $?"EXIT: 0

A commercial value in a mountable file causes the commit to fail. The commit succeeds only after the value moves to a path that no session mounts.

I captured this output live on 2026-08-13. The $750/mo is an invented value, staged for this shot. The hook, the rule, and the rejection are real.

[ The common thread ]

Each of them must survive an operator who is not me.

Work with me