A prompt is not just a question. It is a bundle of instructions, context, attached data, and a hidden set of assumptions about who is asking and what they are allowed to do. That bundle gets assembled in your systems, in the seconds before a model runs. Right now, for most teams, that assembly step has no guardrail. Whatever gets built is what the model sees.
CarnacPrompt puts a read at that exact step. It works at prompt formation time, before inference, so the first judgment about a request happens before any tokens reach a model.
What CarnacPrompt does
CarnacPrompt owns the formation phase of a request. It does three things while the prompt is still being built:
- Classifies what is coming in. It reads the request and sorts it: what kind of task is this, how sensitive is the data attached, and how consequential could it become.
- Structures what enters the prompt window. It shapes what actually goes to the model, so the input is organized and policy-aware rather than a raw, unchecked blob.
- Binds policy and context. It attaches the rules and the situation that apply to this request, so the decision about what to do next is made against real policy, not a guess.
With those in hand, CarnacPrompt helps answer the first gate question: should this request proceed at all? Some requests are fine to run as is. Some should be reshaped first. Some should be held or sent for review before a model ever sees them. Catching a problem here is the cheapest place to catch it, because nothing has run yet.
How it fits with Carnac
CarnacPrompt and Carnac are two cooperating gates that cover different parts of the same request. CarnacPrompt owns the formation phase, where the request is still being shaped. Carnac owns the rest of the life of the request, from the moment it runs to the moment an effect is about to happen.
They share one idea: read before the consequence, and route in proportion to the stakes. CarnacPrompt makes the first read the earliest one possible. If it decides a request can proceed, the later reads that Carnac performs pick up from there, so a request that looks harmless at formation but turns serious later still gets caught.
Why an early read matters
Reading at prompt formation time is not only about blocking bad input. It sets up everything downstream to be more honest and more useful:
- Better inputs, better outputs. A structured, policy-aware prompt gives the model a cleaner problem to solve, which reduces avoidable mistakes.
- Policy that travels with the request. Because context and policy are bound up front, the decision about what proof to require later is made against the real rules, not reconstructed after the fact.
- Cheaper safety. Stopping a request before it runs costs less than catching a bad output or, worse, a bad action.
- A cleaner record. The formation decision becomes part of the same chain of judgment, so an auditor can see not just what the model said but what was allowed to reach it.
What CarnacPrompt does not do
CarnacPrompt reads and shapes requests. It does not make the model more accurate, and it does not promise to catch every possible problem in a single read, which is exactly why Carnac keeps reading across the rest of the request. It is the first gate, not the only one. Being clear about that boundary is the point: an early read that is honest about its limits is worth more than a filter that claims to catch everything and quietly misses the cases that turn serious later.
The safest place to judge a request is before it runs. CarnacPrompt makes that judgment at prompt formation time, then hands a cleaner, policy-bound request to the rest of the chain.
Formation judgment is where provable AI starts. When the first read is bound to real policy and recorded, every proof that follows rests on a clear foundation. This connects to the wider idea behind the Hive Canon and to proof-state: the proof is in the provenance, and provenance begins the moment a request takes shape.
See how CarnacPrompt classifies, structures, and binds policy at prompt formation time, and how it hands off to Carnac for the rest of the request.