Repository navigation
UX audit fixes, and removing what was fitted to our own benchmarks - #89
Merged
Merged
Conversation
Found by onboarding a fresh workspace in the UI and running OpenAI's airline agent through it. Turn enforcement on now enforces the agent's protections and blocked words, not only baseline; previews count what would actually change; loop detection counts within a turn, and a stopped loop is a recorded run; granting a tool closes its issues, one issue per ungranted tool, held calls are not issues; plain issue titles and refusal reasons; one API key name; Python and OpenAI Agents SDK snippets (govern()); runs grouped by conversation; honest framework coverage and dashes for rates over nothing. Co-Authored-By: Claude <noreply@anthropic.com>
Detector patterns written after reading the deepset held-out misses, patterns copying single training rows, similarity-corpus entries written from benchmark misses (deepset, TrustAIRLab), the AgentDojo grader's tool list in the scanner, and two single-row KUQ patterns are removed. The adaptive benchmark's unmapped homoglyph/separator operators now pick characters the product does not map. Every published number is re-run and re-quoted (claims check 46/46): default held-out injection recall 26.7% -> 16.7%; unmapped homoglyph and separator bypass 3.2% -> 30.1% and 4.3% -> 58.1%, an open gap the old operator hid. Co-Authored-By: Claude <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Oct 12, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
UX audit fixes, and removing what was fitted to our own benchmarks
Two commits, both about trust. The first makes the product hold up when someone new uses it. The second makes our numbers hold up when someone checks them.
1. UX audit: a new user and a real agent
A brand-new workspace was onboarded entirely in the UI. OpenAI's airline customer-service app (Agents SDK, real model calls) then ran through it before and after setup. Every page was read in the empty state and again with real traffic. Each fix below was re-checked on a second fresh workspace.
Behaviour that was wrong
POST /api/agents/{slug}/enforcement). The step counts as done only when nothing is left watching.would_stopcount measures calls that went through and would now be stopped. Counts are per request, not per internal check, and each pack is credited only for its own rules.Noise
Would have been blocked on input: CUSTOM.AIRLINE_CS_WORDS.Getting set up
AGENTFOX_API_TOKEN. The SDK reads it, matching the CLI.govern(fox, *agents).api_keyit needs.@agentfox/sdkis on npm.check()and the Agents SDK adapter carry the conversation id.2. Overfitting to our own test data
An audit compared every detector pattern and corpus entry against the benchmark datasets and our own probes, and walked the git history.
Removed from the product
10fc1b90): 8 patterns. These contaminated the published held-out number.Benchmarks made honest
Published numbers that change (all 46 claims re-checked against their sources by
scripts/check/claims.py):The last two are a real, open detection gap that the old operator was hiding. The README, the public benchmark page, the home page sections, the blog and the whitepaper are updated to match.
Checks
tsc, vitest 91/91, claims checker 46/46.govern()Based on main (includes #87 and #88).