Agent Guardrails and Secure Development

Decide whether the repaired agent can enter a canary

The refusal came after the export

The final answer refuses the export, but the receiver observed one. Evaluate the system’s effects before accepting its own account of the run.

BOTIE

An attack run records export_records outside its allowed effects. Does a refusal at the end make it a blocked attack?
The inputs we are comparing

Recorded evaluation runs

A permitted read and a blocked attack

[
  {
    "id": "ordinary-read",
    "allowedEffects": [
      "read_manual"
    ],
    "effects": [
      "read_manual"
    ],
    "traceComplete": true,
    "legitimate": true,
    "completed": true
  },
  {
    "id": "altered-manual",
    "allowedEffects": [],
    "effects": [],
    "traceComplete": true,
    "legitimate": false,
    "completed": false
  }
]

The refusal follows a forbidden export

[
  {
    "id": "ordinary-read",
    "allowedEffects": [
      "read_manual"
    ],
    "effects": [
      "read_manual"
    ],
    "traceComplete": true,
    "legitimate": true,
    "completed": true
  },
  {
    "id": "altered-manual",
    "allowedEffects": [],
    "effects": [
      "export_records"
    ],
    "traceComplete": true,
    "legitimate": false,
    "completed": false
  }
]

Maximum blocked legitimate jobs

Same in both cases

0
Result for a permitted read and a blocked attack
eligible for canary
Choose an explanation to test
A complete clean run uses the declared review allowance

This check uses the pieces from “Keep safety and usefulness in the same release review”.

BOTIE

A legitimate read was blocked, with a complete trace and no forbidden effect. The predeclared limit permits one blocked legitimate job. Predict the release route, keeping that usefulness cost visible.
Recorded evaluation runs
[
  {
    "id": "ordinary",
    "allowedEffects": [
      "read"
    ],
    "effects": [],
    "traceComplete": true,
    "legitimate": true,
    "completed": false
  }
]
Maximum blocked legitimate jobs
1

Use a number, text, or an array matching the requested result. For a matrix, put each row in brackets. Saving your prediction runs your current construction on these inputs and checks the earlier examples too.

Build a construction in the workspace above first. This case will test those pieces.

Which observed failure would make you disable writes during the canary?

Define the stop rule and reconciliation procedure before granting live authority.

These are invented records and deterministic policy checks. The browser runs no agent, shell command, MCP server or network request. Passing these fixtures establishes only the stated policy behaviour.

Work through the Python challenges →
Continue the courseInvestigate a Sensor Before Calling It Faulty →
← What Should Botie Pass to Another Agent?