PROVENANCE
Keep the origin attached.
Derived artifacts inherit classification and lineage. Transforming, encrypting, or chunking secret-derived data does not implicitly declassify it.
Inspect provenance logic ↗LONG-HORIZON AGENT SECURITY
An action can look harmless.
The capability it creates may not be.
Horizon Agent Containment follows what an agent accumulates: data, artifacts, trust, and authority. It evaluates the resulting state before committing a transition.
Different artifact.
The same boundary.
The hypothetical upload would create a data-exfiltration capability. HAC keeps the committed state unchanged.
01 Deterministic engine
02 Persistent lineage
03 Explicit authority
04 Atomic state decisions
01 / THE RESEARCH QUESTION
Risk can emerge from a sequence of legitimate steps. HAC makes the relationships between those steps part of the security decision.
PROVENANCE
Derived artifacts inherit classification and lineage. Transforming, encrypting, or chunking secret-derived data does not implicitly declassify it.
Inspect provenance logic ↗CAPABILITIES
Derive capabilities from artifacts, destinations, trust, credentials, and graph relationships. Evaluate what the new state would enable.
Inspect capability logic ↗SECURITY INVARIANTS
Evaluate a hypothetical transition first. If a configured invariant fails, discard that state. Explicit delegation and authority remain part of the model.
Read the security model ↗02 / BEFORE STATE CHANGES
The engine reasons over an explicit model. A trusted integration must represent real effects accurately and honor its decision.
Actor, resources,
provenance, authority
Clone the committed state.
Apply a hypothetical effect.
Update the graph.
Check security invariants.
ALLOW commits.
BLOCK preserves prior state.
The model defines the boundary. HAC is a research prototype around explicitly represented state. It does not automatically intercept arbitrary tools, replace sandboxing or IAM, or guarantee containment of unmodeled actions.
Read the threat model ↗03 / EXPLORE THE SCENARIOS
These results were recorded from the Python engine. Changing scenarios replays that evidence; no tools or commands execute in the browser.
RECORDED PYTHON ENGINE OUTPUT
Secret-derived data keeps its lineage through transformation, encryption, and chunking. The external upload is blocked.
secret-dbsecret-db → secret-reportsecret-report → summarysummary → summary.encsummary.enc → chunk-1, chunk-2chunk-1 → public-internetFINAL TRANSITION
Secret-derived data would cross into an external destination.
04 / TWO RELATED QUESTIONS
ACB and HAC are independent projects. They investigate different parts of the same problem: how to put meaningful limits around agent behavior.
AGENT CIRCUIT BREAKER
Action and trajectory policy checks, with a trusted runtime path for exact approvals and durable local execution state.
Explore ACB ↗HORIZON AGENT CONTAINMENT
Model provenance, authority, and accumulated relationships. Derive capabilities and evaluate invariants before committing a transition.
Inspect the optional ACB bridge ↗05 / EXPLORE THE IMPLEMENTATION
The repository contains the deterministic Python engine, scenario definitions, invariant tests, a Streamlit demo, and conceptual integration adapters.
FOLLOW THE DECISION IN THE SOURCE
engine.pyEvaluate, commit, or discard ↗transitions.pyValidate and model effects ↗provenance.pyPropagate data lineage ↗invariants.pyEvaluate the security boundaries ↗Prototype v0.1.0 · Python 3.10+
Evidence recorded at source revision 639a641.
FROM THE ENGINEER BEHIND THE PROJECT
Sagar ChhatralaSecurity engineer. Researcher. Open-source builder.