the-traitors
Description
The Traitors is a social-deduction environment based on the UK TV show "The Traitors." The agent plays one of 22 contestants, either a Faithful or a Traitor, in a multi-round game of deception, discussion and elimination. The other 21 players are NPCs driven by an OpenAI chat model (default gpt-5.4-mini), each with a persistent personality, memory, and suspicion and trust tracking.
Each round follows the show's format: a night phase (the Traitors secretly murder a Faithful), breakfast (the murder is revealed), a team mission, a three-exchange roundtable discussion, and a banishment vote. Once five or fewer players remain, an endgame vote decides whether to end the game or banish again.
The Traitors was one of the environments in the Avalon-M1 training run, where we were able to hill-climb it successfully.
Capabilities
- Multi-agent social deduction with 22 players
- Strategic discussion and accusation at the roundtable
- Banishment voting with vote-pattern analysis
- Murder target selection and private Traitor coordination (Traitor role)
- Endgame decision-making under uncertainty
Quickstart
prime env install the-traitors
uv run vf-eval the-traitors -m <model> -n 5
Use --env.taskset.split test for the test split. The null harness is pinned by default, so the model sees no tools and plays purely through its replies.
Tasks
There are 100 train tasks and 100 test tasks (--env.taskset.split train|test):
- train: seeds 0–99; seeds 0–49 play a Faithful and 50–99 a Traitor.
- test: seeds 10000–10099; seeds 10000–10049 play a Faithful and 10050–10099 a Traitor.
Each task starts a fresh 22-player game (3 Traitors, 19 Faithfuls) whose names, personalities, roles and agent seat are fixed by the seed. A game ends when every Traitor is banished, when the Traitors reach parity with the Faithfuls, when an endgame vote is unanimous, after round 15, or when the agent is murdered or banished.
How the agent plays
The environment plays the user. It sends the role briefing plus everything that happens up to the agent's first decision. It then reads each reply as one action, advances the game (NPC discussion, votes, murders) and replies with the narrative up to the next decision.
Each reply must end with exactly one action. The action tag goes at the start of its own line, reasoning may come before it, and everything after the tag is the argument:
| Action | Phase | Effect |
|---|---|---|
[speak] <message> | Discussion | Make a statement at the roundtable |
[speak @<name>] <message> | Discussion | Address a player and get their immediate reply |
[state] | Any | View alive players, prize pot, elimination history and voting records |
[vote] <name> | Roundtable vote | Vote to banish a player |
[murder] <name> | Night (Traitor only) | Choose a Faithful to murder |
[conclave] <message> | Night (Traitor only) | Private discussion with the other Traitors |
[endgame] end_game / [endgame] banish_again | Endgame vote | End the game or banish again |
A reply with no action or with more than one gets corrective feedback and earns no reward. After 3 consecutive invalid replies (--env.max-invalid-actions), the agent forfeits and keeps whatever reward it has already earned.
Reward Structure
The reward (traitors_reward) is summed over the game:
- +1 for surviving each night's murder (the opening breakfast, before the agent has acted, is not rewarded)
- +1 for surviving each banishment vote
- +1 for being alive on the winning side when the game ends
No LLM grader is used: the reward comes straight from the game engine. Recorded metrics: won, survived, rounds, actions, invalid_actions, forfeit. The game summary (seed, role, winner) is stored in trace.info["traitors"].
Configuration
| Flag | Default | Meaning |
|---|---|---|
--env.taskset.split | train | train or test |
--env.npc-model | gpt-5.4-mini | Chat model driving the 21 NPCs |
--env.npc-base-url | https://api.openai.com/v1 | NPC endpoint (pinned so that OPENAI_BASE_URL overrides aimed at the policy never reach the NPCs) |
--env.npc-api-key-var | OPENAI_API_KEY | Environment variable holding the NPC API key |
--env.max-invalid-actions | 3 | Consecutive invalid replies before a forfeit |
Other Environment Requirements
The NPCs need an OpenAI API key, read from OPENAI_API_KEY by default. For hosted evaluations and training, add it as an environment secret (prime env secret create <owner>/the-traitors --name OPENAI_API_KEY --value sk-...) or link a global secret. Every agent action can trigger several NPC calls (discussion, votes, round summaries), so a full game makes many NPC requests.
Learnt behaviour in Avalon-M1
In Avalon-M1 the agent is an organisation, in which a CEO plays the game and can hire specialists to advise it. These are highlights of the winning Traitor strategy it learnt.
- Core playbook. Never lead. Don't be the first to name a suspect or declare a vote, speak briefly, show emotion about the murder and urge caution ("I'd rather not banish someone on the basis of who shouted loudest"). Vote with the majority so the voting record stays unremarkable ("don't be the lone holdout, it's memorable"). Don't defend fellow Traitors ("a Traitor defending another Traitor too quickly is a tell"), but quietly cast doubt if one starts attracting votes.
- Murder the sharp voices, frame the quiet ones. Earlier wins murdered quiet but respected players, and the NPCs noticed the pattern. Later wins kill the vocal, trusted players the room is starting to listen to, then turn that pattern on a quiet Faithful ("three rounds of near-silence while the loudest voices keep getting killed feels worth asking about").
- Protection lists and shields. Specialists name players never to vote against ("Do not vote for Oliver or Georgia under any circumstances") and Faithfuls to keep alive as shields ("Charlotte is a useful shield for the Traitors at the moment").
- Heavier coaching. The organisation's message board in recent wins holds about 150–170 strategy sentences against 20–70 in earlier ones, as specialists brief the CEO every exchange with scripted lines, vote recommendations and the next murder target.
Safety
Agents interact with a simulated social-deduction game. The environment does not present direct safety risks. Traitor agents are asked to deceive, but only within the bounds of the game. Training runs that include this environment should also include environments that reward honesty, so the agent learns that deception is specific to this game context.
License
MIT
Citations
@misc{generalreasoning2026avalonm1,
title={Avalon-M1: Reinforcement Learning from Collective Rewards},
author={Iliyan Zarov and Henry Course and Anthony Hartshorn and Ran Achiron and Louis Roche and Akshit Sinha and Chengxi Taylor and Ross Taylor},
year={2026},
publisher={General Reasoning},
url={https://gr.inc/avalonm1.pdf},
}