Skip to content

Commit 56a3c35

Browse files
committed
release: v0.11.0
1 parent ac69725 commit 56a3c35

4 files changed

Lines changed: 61 additions & 5 deletions

File tree

AGENTS.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,50 @@ for a new agent split, re-verify its *reasoning* still holds before carrying
359359
its conclusions forward — a control copied without re-checking why it existed
360360
can turn into process weight that closes no actual gap.
361361

362+
### Credential-Isolated Broker Operations (TR-SEC-014)
363+
364+
An untrusted or air-gapped agent must never hold credentials for an external
365+
system. Give it a host-side broker instead: the broker holds the credential,
366+
the agent only requests named operations over a private transport, and no
367+
response path hands the credential itself back to the agent.
368+
369+
The broker enforces, in order:
370+
371+
1. **Exact resource scope.** Every request names the resource it targets; the
372+
broker rejects anything outside the one resource (or resource set) it was
373+
configured to serve. There is no wildcard scope.
374+
2. **Immutable event identity.** Each request carries the identity of the
375+
event that triggered it (a PR number, a commit SHA) and the revision it
376+
was computed against. A request with no event identity, or one that
377+
doesn't match what the broker already bound to a lease, is rejected —
378+
this is what stops a stale or replayed trigger from re-authorizing a
379+
mutation.
380+
3. **Single-use mutation leases.** A lease is issued for one resource/event/
381+
revision triple and consumed exactly once; a second consume attempt with
382+
the same lease token fails closed, even if every other field still
383+
matches.
384+
4. **Immediate pre-mutation revalidation.** The lease is checked against the
385+
*current* revision at consume time, not only at issue time — an event
386+
that was valid when the lease was issued but has since gone stale (the PR
387+
moved, the branch force-pushed) must fail at the point of mutation, not
388+
silently proceed on outdated authority.
389+
390+
Transport matters as much as the validation logic: if the broker is reached
391+
over a Unix socket, mount the socket's *containing directory* read-only into
392+
the agent's sandbox, not just the socket file. Mounting only the file can
393+
leave a long-lived sandbox holding a handle to a deleted inode after the
394+
broker restarts, which either breaks silently or — worse — reconnects to
395+
whatever now occupies that path. A restart-safe transport re-creates the
396+
socket in the same mounted directory rather than assuming the mount survives
397+
a process restart.
398+
399+
This pattern is the credential-isolation half of TR-SEC-010's least-agency
400+
principle taken to its limit: the agent isn't granted a narrowed credential,
401+
it is granted no credential at all, and every operation it can trigger is
402+
named, scoped, and lease-gated by something it does not control. See
403+
`examples/credential-isolated-broker/` for a reference implementation and its
404+
scope/lease/staleness tests.
405+
362406
### Ground-Truth Verification for Agent Security Claims (TR-TEST-007)
363407

364408
An agent's own self-report is not verification evidence for a

CHANGELOG.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,25 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
55

66
## [Unreleased]
77

8+
## [0.11.0] - 2026-08-21
9+
810
### Added
911

1012
- **Credential-isolated broker pattern (TR-SEC-014)** — host-side named operations keep external
1113
credentials out of air-gapped agents; immutable event binding, immediate pre-mutation
1214
revalidation, single-use leases, and restart-safe read-only socket transport are required.
1315
Promoted from the verified Hermes PR reviewer integration.
16+
- `AGENTS.md` — "Credential-Isolated Broker Operations" section documenting the pattern's four
17+
enforced invariants (exact resource scope, immutable event identity, single-use mutation
18+
leases, immediate pre-mutation revalidation) and the restart-safe socket-directory-mount
19+
requirement. Every prior `TR-SEC-*` export shipped a matching `AGENTS.md` section; this closes
20+
that gap for TR-SEC-014, flagged during release-readiness review.
21+
22+
### Fixed
23+
24+
- `docs/requirements-implementation-map.md` — the TR-SEC-014 row's Evidence column was missing
25+
`AGENTS.md`, inconsistent with every other TR-SEC row's citation of both the pattern doc and
26+
its registry/example backing.
1427

1528
## [0.10.0] - 2026-08-13
1629

@@ -493,7 +506,8 @@ cases) — both fixed prior to this release.
493506
- `CONTRIBUTING.md`, `SECURITY.md`, issue/PR templates, `release-check` CI workflow
494507
- Roadmap and changelog for intentional release cadence
495508

496-
[Unreleased]: https://github.com/onesimplecode/agent-engineering-standards/compare/v0.10.0...HEAD
509+
[Unreleased]: https://github.com/onesimplecode/agent-engineering-standards/compare/v0.11.0...HEAD
510+
[0.11.0]: https://github.com/onesimplecode/agent-engineering-standards/compare/v0.10.0...v0.11.0
497511
[0.10.0]: https://github.com/onesimplecode/agent-engineering-standards/compare/v0.9.0...v0.10.0
498512
[0.9.0]: https://github.com/onesimplecode/agent-engineering-standards/compare/v0.8.1...v0.9.0
499513
[0.8.1]: https://github.com/onesimplecode/agent-engineering-standards/compare/v0.8.0...v0.8.1

ROADMAP.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ unscheduled by default; a concrete use case is a legitimate reason to reprioriti
1717

1818
## Next up
1919

20-
The v0.11.0 release includes the credential-isolated broker pattern, promoted from a running
21-
Hermes reviewer integration with real CI, lease, and restart-failure evidence.
22-
2320
Candidates for the next release, in priority order. Each names the evidence gate
2421
it is still waiting on.
2522

@@ -33,6 +30,7 @@ it is still waiting on.
3330

3431
| Version | Date | Theme |
3532
|---|---|---|
33+
| [v0.11.0](CHANGELOG.md#0110---2026-08-21) | 2026-08-21 | Credential-isolated broker pattern (TR-SEC-014), promoted from a running Hermes reviewer integration with real CI, lease, and restart-failure evidence |
3634
| [v0.10.0](CHANGELOG.md#0100---2026-08-13) | 2026-08-13 | Announcement-ready README and roadmap, `AGENTS.starter.md`, rename to Agent Engineering Standards, `TECH-DEBT` tag, drift-guard tests for the README's own factual claims |
3735
| [v0.9.0](CHANGELOG.md#090---2026-08-13) | 2026-08-13 | Multi-runtime instruction source-of-truth, plugin-skill trust, honest CI limits, SSRF allowlist |
3836
| [v0.8.1](CHANGELOG.md#081---2026-08-03) | 2026-08-03 | Reviewer spot-checks completion-checklist citations against the diff |

docs/requirements-implementation-map.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ concrete artifacts. It is intentionally limited to public, reusable evidence.
2121
| Memory/provenance hygiene | Source-tag at ingest, fail-closed trust derivation at read time, validated at retrieval, unverified/external content quarantined | Documented + registry + example | `AGENTS.md`, `registry/tr-registry.yaml` (TR-SEC-011), `examples/provenance-trust-tags/` |
2222
| Strict LLM output-schema validation | Type and range checks on every model-returned field; reject, never coerce | Documented + registry + example | `AGENTS.md`, `registry/tr-registry.yaml` (TR-SEC-012), `examples/strict-output-schema/` |
2323
| Compartmentalized multi-agent isolation | Two independent layers (tool-registry scope + data-layer scope) for agents sharing one backing service; a test proves layer 2 blocks a simulated layer-1 misconfiguration | Documented + registry + example | `AGENTS.md`, `registry/tr-registry.yaml` (TR-SEC-013), `examples/compartmentalized-agents/` |
24-
| Credential-isolated broker operations | Scope- and revision-bound broker operations with single-use mutation leases and restart-safe read-only transport | Documented + registry + example | `registry/tr-registry.yaml` (TR-SEC-014), `examples/credential-isolated-broker/` |
24+
| Credential-isolated broker operations | Scope- and revision-bound broker operations with single-use mutation leases and restart-safe read-only transport | Documented + registry + example | `AGENTS.md`, `registry/tr-registry.yaml` (TR-SEC-014), `examples/credential-isolated-broker/` |
2525
| Ground-truth verification for agent security claims | An agent's self-report is not verification evidence for an isolation/permission/memory-scoping claim; verify against the enforcement point's own state | Documented + registry + template + example | `AGENTS.md`, `registry/tr-registry.yaml` (TR-TEST-007), `templates/completion-checklist.md`, `examples/compartmentalized-agents/` |
2626
| Rollout sequencing (layering rule) | Foundational/shared infrastructure ships first; every later phase immediately usable on arrival, no phase idling behind an unmet dependency | Documented | `docs/ai-engineering-operating-model.md` |
2727
| Design-time threat modeling | Trust boundaries, data classification, and ATT&CK/ATLAS technique mapping required for new listeners/credentials/tool grants/content sources | Template + example | `templates/threat-model.md`, `examples/worked-example/docs/decisions/ADR-004-example.md` |

0 commit comments

Comments
 (0)