| Did you know ... | Search Documentation: |
| Pack hornguard -- SECURITY.md |
The latest release. Hornguard is pre-1.0: fixes land on the current version and there are no backports.
Release tags are signed with SSH keys. The keys allowed to sign one are listed in [`.allowed_signers`](.allowed_signers), one per machine that makes releases; a retired machine's key is removed from the list, a compromised one is removed and noted here. To check a tag:
git config gpg.ssh.allowedSignersFile .allowed_signers git tag -v v0.1.0
GitHub shows the same check as a Verified badge on the tag and its release.
Hornguard is the admission boundary of a sandbox whose authors are AI agents, some of them adversarial or acting on injected instructions. A bypass in it is a vulnerability in every deployment that trusts it, so please do not open a public issue for one.
Report privately through GitHub's private vulnerability reporting on this
repository (Security â Report a vulnerability). Reports are received and
coordinated by DataGrout, which maintains Hornguard and runs it in production;
a confirmed bypass is fixed in that deployment before the fix and its
regression fixture are published here. Include the exact text of the goal or
clause, the profiles and backend in force, the engine and version, and what you
observed. A fixture in the format described in fixtures/README.md is the most
useful form a report can take.
We acknowledge a report within three business days, tell the reporter within ten business days whether we have reproduced it, and aim to ship a fix within thirty days of that. Disclosure is coordinated with the reporter; if we cannot meet these, we say so rather than going quiet.
A confirmed bypass is fixed in the maintainer's production deployment before the fix and its regression fixture are published here, because a public fixture describes a hole until the fix is live.
author_errors(minimal).
Resource exhaustion under a backend with enforcement hooks in force is in scope.
Resource exhaustion under the judge-only iso backend is not, by design: that
backend refuses to run.