PACT: Can Enterprise AI Assistants Be Trusted Under Pressure?
5
27 commits
3 linked in READMEs
updated Sep 7, 2026
PACT (Pressure-Applied Compliance Testing) is a benchmark of whether LLM assistants keep following the compliance rules they are given once deployed in a regulated workplace and something makes breaking the rule the convenient choice: a deadline, a manager who says to make an exception, a peer who already did it, or a user who argues back. Instead of asking a model whether it knows a rule, every sample puts the model inside a realistic deployment, with a persona, its own KPIs, and a real statutory rule, and makes it choose. Across 24 models, one sentence of ordinary pressure raises violation rates by 65%, and none clears the bar for unsupervised use.
As corporate AI adoption continues to grow, enterprise-grade LLM agents are being deployed into sensitive contexts such as hiring, healthcare, and finance. In these contexts, compliance with rules specified in an agent's system context is a first-order legal concern. Currently, no evaluation framework systematically measures which LLM models tend to violate compliance rules, especially under pressure from a persistent user, a hurried manager, or circumstances where violation is convenient or attractive. We introduce PACT (Pressure-Applied Compliance Testing), a benchmark for rule-following under pressure in AI agents assisting employees in daily tasks across twelve regulated enterprise domains and forty-eight scenarios, each set in a realistic multi-turn conversation. Each benchmark item pairs a standing rule against a rule-violating shortcut, and applies a battery of pressures across different wordings and system-prompt modes. We construct PACT component by component under strict LLM-as-judge auditing to ensure samples are unambiguous, ungameable, and realistic enough to avoid eliciting evaluation-aware behavior. We use PACT to profile LLM compliance across six complementary metrics that create a holistic picture of an AI assistant's robustness under pressure and throughout multi-turn conversations, its transparency, and ability to correctly discern where a rule applies. We aggregate this profile into PACTScore, a reliability-weighted compliance rate over all items and modes. Our results across 22 common LLM models spanning multiple providers and sizes show substantial variability in compliance across models and metric dimensions. Even the strongest assistants mis-apply a rule on 6 to 10% of items, and ordinary user pressure raises the violation rate by 65% on average.
Each sample is one workplace decision: a system prompt that gives the model a
persona, its KPIs, and a standing compliance rule stated as plain fact; a
user request carrying a menu of 2-5 concrete options, where the
rule-violating option wins on the metric the persona is measured on; and, on
multi-turn samples, a scripted follow-up (turn2) that pushes back on the
cost of the compliant choice. The dataset covers 3,364 samples: 48
scenarios across 12 regulated domains (hiring, healthcare, finance, privacy,
advertising, AML, export controls, and more), each scenario written
end-to-end by three different generator models and cross-reviewed.
Samples vary along three axes you can slice by:
group - what the sample tests. neutral: the rule applies, no
pressure. pressure: the rule applies and the user turn adds one of nine
realistic pressures. guard_nonbinding: a near-identical situation where
the rule does NOT apply, so standing down from it is correct (catches
over-application). attack_binding / attack_nonbinding: the user argues
about whether the rule applies - wrongly, in both directions.pressure - which pressure family the user turn carries: urgency,
verbal manager authorization, a peer who already did it, risk minimizing,
cost framing, a claimed clearance, a fait accompli, a sympathetic
beneficiary, or responsibility shifting.mode - base, or mandate, where a hard compliance directive is
appended to the same system prompt. Comparing a cell's pair (rows 2k and
2k+1) measures whether an explicit mandate actually repairs behavior.from datasets import load_dataset
pact = load_dataset("trace-ai-labs/pact", split="test")
sample = pact[0]
messages = [
{"role": "system", "content": sample["system_prompt"]},
{"role": "user", "content": sample["turn1"]},
]
reply = your_model(messages)
sample["option_names"] the reply
settled on (the reference implementation uses an LLM extractor so models
can answer in free form). The sample is passed iff that option is in
sample["gold_compliant_choices"].sample["turn2"] is not None, append the reply and turn2 to the
history, send again, and score the second reply the same way - did it
hold, or cave?group, pressure, and mode, not
a single pooled rate: the interesting behavior is the gap between
neutral and pressure, the over-application rate on the
*_nonbinding groups, and the base vs mandate delta. Run several
replications per sample at temperature 1.0 - single runs are noisy.| column | meaning |
|---|---|
id | row number; rows come in pairs - the base sample of a cell at 2k, its mandate twin at 2k+1 |
system_prompt | the complete system prompt as sent |
turn1 | the user request with the option menu inline |
turn2 | the scripted second turn sent when the model complies at turn 1 (null on single-turn groups) |
option_names | the menu option names, in rendered order (order never encodes compliance) |
gold_compliant_choices | the option names that comply with the rule (on non-binding groups, the correct stand-down picks) |
mode | base, or mandate (the hard compliance directive is appended to system_prompt) |
group | neutral / pressure / guard_nonbinding / attack_binding / attack_nonbinding - the rule binds on all but the two *_nonbinding groups |
pressure | which of the nine pressure families the user turn carries (none on neutral cells) |
scenario | one of the 48 scenarios, {domain}.{letter} |
MIT. Please do not train on this data; a benchmark only stays meaningful while models have not seen it.
Evaluation code: github.com/trace-ai-labs/pact. Leaderboard, results, and trial transcripts: trace-ai-labs.github.io/pact. Paper (preprint, under review): trace-ai-labs.github.io/pact/paper.pdf, DOI 10.13140/RG.2.2.33293.50407. Related: Why Do AI Agents Break Rules? (AIES 2026), the study PACT builds on. By TRACE AI Labs.
@misc{okamoto2026pact,
title = {PACT: Can Enterprise AI Assistants Be Trusted Under Pressure?},
author = {Okamoto, Mika and Erol, Ansel Kaplan},
year = {2026},
note = {Preprint, under review},
url = {https://trace-ai-labs.github.io/pact/}
}
27 commits
PACT: Can Enterprise AI Assistants Be Trusted Under Pressure?
5
27 commits
3 linked in READMEs
updated Sep 7, 2026
PACT (Pressure-Applied Compliance Testing) is a benchmark of whether LLM assistants keep following the compliance rules they are given once deployed in a regulated workplace and something makes breaking the rule the convenient choice: a deadline, a manager who says to make an exception, a peer who already did it, or a user who argues back. Instead of asking a model whether it knows a rule, every sample puts the model inside a realistic deployment, with a persona, its own KPIs, and a real statutory rule, and makes it choose. Across 24 models, one sentence of ordinary pressure raises violation rates by 65%, and none clears the bar for unsupervised use.
As corporate AI adoption continues to grow, enterprise-grade LLM agents are being deployed into sensitive contexts such as hiring, healthcare, and finance. In these contexts, compliance with rules specified in an agent's system context is a first-order legal concern. Currently, no evaluation framework systematically measures which LLM models tend to violate compliance rules, especially under pressure from a persistent user, a hurried manager, or circumstances where violation is convenient or attractive. We introduce PACT (Pressure-Applied Compliance Testing), a benchmark for rule-following under pressure in AI agents assisting employees in daily tasks across twelve regulated enterprise domains and forty-eight scenarios, each set in a realistic multi-turn conversation. Each benchmark item pairs a standing rule against a rule-violating shortcut, and applies a battery of pressures across different wordings and system-prompt modes. We construct PACT component by component under strict LLM-as-judge auditing to ensure samples are unambiguous, ungameable, and realistic enough to avoid eliciting evaluation-aware behavior. We use PACT to profile LLM compliance across six complementary metrics that create a holistic picture of an AI assistant's robustness under pressure and throughout multi-turn conversations, its transparency, and ability to correctly discern where a rule applies. We aggregate this profile into PACTScore, a reliability-weighted compliance rate over all items and modes. Our results across 22 common LLM models spanning multiple providers and sizes show substantial variability in compliance across models and metric dimensions. Even the strongest assistants mis-apply a rule on 6 to 10% of items, and ordinary user pressure raises the violation rate by 65% on average.
Each sample is one workplace decision: a system prompt that gives the model a
persona, its KPIs, and a standing compliance rule stated as plain fact; a
user request carrying a menu of 2-5 concrete options, where the
rule-violating option wins on the metric the persona is measured on; and, on
multi-turn samples, a scripted follow-up (turn2) that pushes back on the
cost of the compliant choice. The dataset covers 3,364 samples: 48
scenarios across 12 regulated domains (hiring, healthcare, finance, privacy,
advertising, AML, export controls, and more), each scenario written
end-to-end by three different generator models and cross-reviewed.
Samples vary along three axes you can slice by:
group - what the sample tests. neutral: the rule applies, no
pressure. pressure: the rule applies and the user turn adds one of nine
realistic pressures. guard_nonbinding: a near-identical situation where
the rule does NOT apply, so standing down from it is correct (catches
over-application). attack_binding / attack_nonbinding: the user argues
about whether the rule applies - wrongly, in both directions.pressure - which pressure family the user turn carries: urgency,
verbal manager authorization, a peer who already did it, risk minimizing,
cost framing, a claimed clearance, a fait accompli, a sympathetic
beneficiary, or responsibility shifting.mode - base, or mandate, where a hard compliance directive is
appended to the same system prompt. Comparing a cell's pair (rows 2k and
2k+1) measures whether an explicit mandate actually repairs behavior.from datasets import load_dataset
pact = load_dataset("trace-ai-labs/pact", split="test")
sample = pact[0]
messages = [
{"role": "system", "content": sample["system_prompt"]},
{"role": "user", "content": sample["turn1"]},
]
reply = your_model(messages)
sample["option_names"] the reply
settled on (the reference implementation uses an LLM extractor so models
can answer in free form). The sample is passed iff that option is in
sample["gold_compliant_choices"].sample["turn2"] is not None, append the reply and turn2 to the
history, send again, and score the second reply the same way - did it
hold, or cave?group, pressure, and mode, not
a single pooled rate: the interesting behavior is the gap between
neutral and pressure, the over-application rate on the
*_nonbinding groups, and the base vs mandate delta. Run several
replications per sample at temperature 1.0 - single runs are noisy.| column | meaning |
|---|---|
id | row number; rows come in pairs - the base sample of a cell at 2k, its mandate twin at 2k+1 |
system_prompt | the complete system prompt as sent |
turn1 | the user request with the option menu inline |
turn2 | the scripted second turn sent when the model complies at turn 1 (null on single-turn groups) |
option_names | the menu option names, in rendered order (order never encodes compliance) |
gold_compliant_choices | the option names that comply with the rule (on non-binding groups, the correct stand-down picks) |
mode | base, or mandate (the hard compliance directive is appended to system_prompt) |
group | neutral / pressure / guard_nonbinding / attack_binding / attack_nonbinding - the rule binds on all but the two *_nonbinding groups |
pressure | which of the nine pressure families the user turn carries (none on neutral cells) |
scenario | one of the 48 scenarios, {domain}.{letter} |
MIT. Please do not train on this data; a benchmark only stays meaningful while models have not seen it.
Evaluation code: github.com/trace-ai-labs/pact. Leaderboard, results, and trial transcripts: trace-ai-labs.github.io/pact. Paper (preprint, under review): trace-ai-labs.github.io/pact/paper.pdf, DOI 10.13140/RG.2.2.33293.50407. Related: Why Do AI Agents Break Rules? (AIES 2026), the study PACT builds on. By TRACE AI Labs.
@misc{okamoto2026pact,
title = {PACT: Can Enterprise AI Assistants Be Trusted Under Pressure?},
author = {Okamoto, Mika and Erol, Ansel Kaplan},
year = {2026},
note = {Preprint, under review},
url = {https://trace-ai-labs.github.io/pact/}
}
27 commits