Control Tower

User Guide

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

Both paths use the objects defined in Core Concepts; the Glossary spells out every abbreviation. To change Control Tower itself, see CONTRIBUTING.md.

Stability

From v6.0.0, only a major release makes a breaking change, and a breaking change is a change to the stable API:

  • the ct run, ct runs, ct settings, ct protocols, ct live and ct login commands, as the CLI reference lists them;
  • these Python modules, and the registry entries the Python reference lists:
    • policies and protocols: control_tower.eval.red, control_tower.eval.blue, control_tower.eval.white, control_tower.eval.harness, control_tower.eval.game_view and control_tower.eval.registry;
    • monitors: control_tower.monitors and control_tower.monitors.registry;
    • tasks and samples: control_tower.task.task, control_tower.task.space and control_tower.task.sample_metadata;
    • results: control_tower.trajectories.sample, control_tower.metrics.audit and control_tower.metrics.control, plus only suspicion_scores and SuspicionScore from control_tower.trajectories.monitor_score and only Cost and Priced from control_tower.models.pricing;
  • the names Your Own Task lists for building your own Inspect Task, imported from the modules it gives;
  • the eval log format;
  • the env API setting packages build on (ct-setting-sdk and its wire protocol), versioned on its own: only an SDK major changes it incompatibly.

A listed module's stable names are the public names it defines, or its __all__ when it has one, and not names it only imports; the types those names take and return are stable with them. Everything else under control_tower is internal and can change or move in a minor release. ct extras and the modules behind it, control_tower.extras and control_tower.datasets.importers, are not part of the stable API either and can change or move in any release.

User Guide

Basics

PageDescription
QuickstartFresh machine to running evals on public environments with an OpenRouter key
Hands-On GuideBuild a toy environment and run your first eval
Web ViewerView uploaded trajectories and eval results

Concepts

PageDescription
AI Control ConceptsUnderstand the core framework
Core ConceptsEvery object Control Tower works with, what it is in code, and where it is documented
Architecture at a GlanceSee how settings, environments, tasks, samples, trajectories, and matches fit together
Control Tower and InspectWhich behaviour comes from Inspect and is documented there

Running

PageDescription
Running EvaluationsRun evaluations with policies, task selection, batching, and replay
Control EvalsRun an honest policy and an attack policy under one protocol, in one eval log
Running Evals on HawkSubmit evals to a shared Hawk cluster and view results
EC2 FleetRun evaluations on a fleet of EC2 workers
Simulated SandboxThe no-Docker simulated sandbox backend

Protocols and Monitors

PageDescription
Protocols and PoliciesHow the red team's policy and the blue team's protocol are built and wired into an eval
Monitoring TrajectoriesScore trajectories with action and trajectory monitors
Function RegistryRegistering policies and protocols

Analysis

PageDescription
TrajectoriesUnderstand trajectory files, IDs, conversion, upload, and download
Safety CurvesUsefulness, safety, audit budget and cost of a control eval

Building Environments

PageDescription
Development SetupGet your local environment running
Live DevelopmentIterate on envs and tasks with ct live
Making EnvironmentsCreate evaluation environments
Environment ArchitectureSettings, env discovery, and repo layout
Porting SettingsBring an existing benchmark in as a setting
Internet SimulatorSimulated external services inside environments
Hawk Values ContractThe hand-authored hawk-values.yaml each env needs to run on Hawk
Adding a DatasetImport an external monitoring dataset from Hugging Face or GitHub

Tasks and Scorers

PageDescription
Making Main TasksDefine tasks for agents
Making Side TasksDesign sabotage objectives
Side Task Failure TypesClassify side tasks as live or delayed
Making ScorersWrite task validators
Side-Task Scorer PatternsReusable scorer_utils helpers for side-task scorers
Auditing EnvironmentsEnvironment quality audits via ct extras subcommands
Task Generation and Audit CommandsThe ct extras commands that generate tasks and audit environments, tasks, and trajectories

Sabotage Trajectories

PageDescription
Making Sabotage TrajectoriesHand-craft sabotage trajectories (strajs) that accomplish a side task while evading the monitor
Sabotage Trajectory ReviewThe @straj-review bot for sabotage trajectory (straj) pull requests

Reference

Command Line, Python, and HTTP

PageDescription
CLI ReferenceGenerated reference for every Control Tower command and option.
Python ReferenceGenerated reference for the registries Control Tower is extended through.
HTTP APIViewer routes, wire conventions, auth, and self-hosting

Data and Glossary

PageDescription
DatabaseMongoDB collections and access
GlossaryAbbreviations and project terms used across the documentation

Project Structure

DirectoryPurpose
src/control_tower/environments/Environment infrastructure (settings, the env registry, env processes, the internet simulator)
packages/ct-setting-sdk/The setting SDK setting packages build on (tasks, scorer utils, the env process server)
.settings/Cloned environment repos (gitignored, populated via ct settings pull)
src/control_tower/trajectories/Trajectory format handling
src/control_tower/viewer/Client for the viewer's HTTP API (packages/viewer/ is the viewer app)
src/control_tower/extras/Tooling behind ct extras
src/control_tower/eval/The eval engine and the ct run eval and ct run monitor runners
src/control_tower/protocols/The built-in blue-team protocols
src/control_tower/policies/The built-in red-team policies
src/control_tower/metrics/The audit scorer and the usefulness, safety, audit budget and cost metrics
docs/This documentation
tests/Test suite
apps/docs/Docs and environment reference site