Safety policy
The document deciding when an agent stops to ask, and the record of what it decided
On this page(3 sections)
Settings next door are read by a parser; this one is read by a model. The policy is prose about which of the things an agent may already do are worth interrupting you about, and the two policy routes read and replace it whole. The third is the log every verdict lands in, including the ones nobody was interrupted for, and it is what makes the document writable: an owner can only author a rule for behaviour they can see.
GET/safety/policyThe safety policy this sandbox is judged against
The document that decides when an agent stops to ask you before running something. Prose, not settings: it is read by the model that judges each command. When nobody has written one, this is the text the product ships with, and it describes the behaviour a fresh sandbox already has.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
textThe policy, as the owner wrote… | string |
customFalse when nobody has edited it… | boolean |
curl "$SANDBOX/safety/policy" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.safety.policy();POST/safety/policyRewrite the safety policy
Replaces the document whole. Nothing in it can widen what the sandbox is structurally allowed to do: it decides which of the things an agent may already do are worth interrupting you about.
What you send
| Field | Type | Where |
|---|---|---|
textrequiredThe policy, as you want it… | string | body |
What comes back
| Field | Type |
|---|---|
okAlways true | true |
curl -X POST "$SANDBOX/safety/policy" \
-H "x-intentic-control: $INTENTIC_TOKEN" \
-H "content-type: application/json" \
-d '{"text":"export const start = () => listen(PORT);\n"}'import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.safety.setPolicy({
"text": "export const start = () => listen(PORT);\n"
});GET/safety/logRecent safety verdicts
What was judged lately, what the judge decided, and whether you were interrupted. Newest first. This is where you find out why you were not asked about something, which is the question a policy page otherwise cannot answer.
What you send
Nothing. Call it as it is.
What comes back
| Field | Type |
|---|---|
atWhen it was judged, epoch milliseconds | integer |
programThe command or script, excerpted | string |
classesThe kinds of consequence triage matched,… | string[] |
decisionWhat the judge decided | "allow" | "ask" | "refuse" |
sentenceThe judge's sentence | string |
outcomeWhat the gate did in the… | "allowed" | "asked" | "refused" |
answerHow the owner answered, when they… | "allowed" | "declined" | "unanswered" |
machineWhich connected device it was headed… | string |
curl "$SANDBOX/safety/log" \
-H "x-intentic-control: $INTENTIC_TOKEN"import { sandbox } from "@intentic/sandbox-client";
const result = await sandbox.safety.log();