Policies and decisions
Allow, deny, hold for a human — and what each one means to your caller.
A policy is a rule about what an agent may do. The engine that evaluates them is plain deterministic code: the same inputs always produce the same decision, and no model is asked for its opinion about whether your refund should go through.
What a decision looks like
Every governed call ends in one of these. The first four are answers; the last two are Navige telling you it could not give one.
allow— proceed.deny— do not proceed, with a reason.pending— a human has to decide. You get an approval id and an expiry.approved/rejected/expired— how a pending one resolved.error— the request was malformed, or Navige itself is unavailable. The two are distinguishable; see Failure behaviour.
Classification
Tools are classified so that policies can be written about categories rather than about every tool name you will ever add. The classes are read, write, destructive, financial and unknown.
unknown is a real answer, not a default to be tidied away. A tool nobody has classified is exactly the one you want a policy to be able to catch.
Holding a call for a human
When a policy requires approval, the /enforce call blocks until someone decides or the request expires — up to five minutes. That suits a backend job and does not suit a caller with a short timeout, such as a Salesforce Apex callout.
For those, send "wait": false. You get an immediate pending with an id, and you poll:
curl https://api.navige.ai/enforce/status/$APPROVAL_ID \
-H "x-navige-key: $NAVIGE_KEY"On Watchtower
Policies are evaluated exactly the same way and the decision is recorded — but a deny becomes advisory and the call proceeds. The console shows what would have been stopped.
The kill switch is the exception. It stops calls on every tier, free included, because a stop button that depends on a subscription is not a stop button.
Autonomy levels
Each agent carries a level from L1 to L5, describing how much it is trusted to do without a human. Policies can be written against it, so “anything above L3 may not touch a financial tool” is one rule rather than one rule per agent.