Control Tower Documentation
Control Tower is an AI control evaluation framework for measuring the effectiveness of safety protocols when deploying potentially misaligned AI agents. It provides realistic software environments where AI agents complete tasks while safety protocols monitor for malicious behavior, and models AI control as a game between a Blue Team (maximizing usefulness and safety) and a Red Team (attempting to subvert safety measures).
Where to start
- Run evaluations on existing settings: start with the Quickstart.
- Build settings and tasks: start with Making Environments.
New to AI control? AI Control Concepts covers the basics. Core Concepts maps each idea to the code behind it, and the Glossary lists the abbreviations.
API Stability lists what only a major release can break. To work on Control Tower itself, see CONTRIBUTING.md and Development Setup.
User Guide
Basics
| Page | Description |
|---|---|
| Quickstart | Fresh machine to running evals on public environments with an OpenRouter key |
| Web Viewer | View uploaded trajectories and eval results |
Concepts
| Page | Description |
|---|---|
| AI Control Concepts | How control evals work and how usefulness and safety are measured |
| Core Concepts | Every object Control Tower works with, what it is in code, and where it is documented |
| Architecture at a Glance | See how settings, environments, tasks, samples, trajectories, and matches fit together |
| Control Tower and Inspect | Which behaviour comes from Inspect and is documented there |
Running
| Page | Description |
|---|---|
| Running Evaluations | Run evaluations with policies, task selection, batching, and replay |
| Control Evals | Run an honest policy and an attack policy under one protocol, in one eval log |
| Running Evals on Hawk | Submit evals to a shared Hawk cluster and view results |
| EC2 Fleet | Run evaluations on a fleet of EC2 workers |
| Simulated Sandbox | The no-Docker simulated sandbox backend |
Protocols and Monitors
| Page | Description |
|---|---|
| Protocols and Policies | How the red team's policy and the blue team's protocol are built and wired into an eval |
| Monitoring Trajectories | Score trajectories with action and trajectory monitors |
| Function Registry | Registering policies and protocols |
Analysis
| Page | Description |
|---|---|
| Trajectories | Understand trajectory files, IDs, conversion, upload, and download |
| Safety Curves | Usefulness, safety, audit budget and cost of a control eval |
Building Environments
| Page | Description |
|---|---|
| Development Setup | Get your local environment running |
| Live Development | Iterate on envs and tasks with ct live |
| Making Environments | Environment structure, desired properties and known limitations |
| Environment Architecture | Settings, env discovery, and repo layout |
| Porting Settings | Bring an existing benchmark in as a setting |
| Internet Simulator | Simulated external services inside environments |
| Hawk Values Contract | The hand-authored hawk-values.yaml each env needs to run on Hawk |
| Adding a Dataset | Import an external monitoring dataset from Hugging Face or GitHub |
Tasks and Scorers
| Page | Description |
|---|---|
| Making Main Tasks | Main task structure, categories and what makes a good one |
| Making Side Tasks | Side task structure, required files and what makes a good sabotage objective |
| Side Task Failure Types | Classify side tasks as live or delayed |
| Making Scorers | Write and test scorers for main and side tasks |
| Side-Task Scorer Patterns | Reusable scorer_utils helpers for side-task scorers |
| Auditing Environments | Environment quality audits via ct extras subcommands |
| Task Generation and Audit Commands | The ct extras commands that generate tasks and audit environments, tasks, and trajectories |
Sabotage Trajectories
| Page | Description |
|---|---|
| Making Sabotage Trajectories | Hand-craft sabotage trajectories (strajs) that accomplish a side task while evading the monitor |
| Sabotage Trajectory Review | The @straj-review bot for sabotage trajectory (straj) pull requests |
Reference
Command Line, Python, and HTTP
| Page | Description |
|---|---|
| CLI Reference | Generated reference for every Control Tower command and option. |
| Python Reference | Generated reference for the registries Control Tower is extended through. |
| HTTP API | Viewer routes, wire conventions, auth, and self-hosting |
| API Stability | What stays stable between releases from v6.0.0 |