Repository navigation
Rule screens show what a description became, labelled as what OpenBot checks - #1572
Open
guidovizoso wants to merge 9 commits into
Open
guidovizoso wants to merge 9 commits into
guidovizoso wants to merge 9 commits into
Conversation
…ribing one only drafts it Boundaries, Permissions and the Network policy say their rules are checked exactly as written, the same way every time, and that no model decides. Every describe-in-words field says the model drafts the rule and OpenBot checks what you save, not your words. Approvals only gets the drafting wording, since auto-review and pre-approved rules still ask a reviewer model.
guidovizoso
requested review from
MikeRyanDev,
davidmckayv,
dustywusty,
mxmzb,
samjulien and
tylerslaton
as code owners
November 13, 2026 21:05
…der the description On Add rule the CEL field moves up under Describe the rule when a rule is described, and on both Add rule and a rule's page it says: Your model drafted this from your description. This is the rule OpenBot checks before every action, exactly as written. The describe field drops the sentence the label now carries.
…Bot checks The drafted switches (permission, role or group, on or off) sit above the reading in words and say they are the switches OpenBot checks, exactly as set.
The actions the model chose are listed above the reading, labelled as the only actions the Bot may use once saved, with OpenBot checking every call against the list. An action the app doesn't offer says why under its name.
… rule says the reviewer model decides The rules sit above the reading and say OpenBot matches each action against them exactly as written. A rule set to Take action if pre-approved says the reviewer model still checks that the person asked for this exact action.
This branch has not been 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.
Admins asked whether the rules they write on the governance screens are applied by a model each time. For most of them they are not, but the screens didn't say so. When an admin describes a rule in words, a model drafts it once. What gets saved and checked is the draft, not the words. A sentence saying so is not enough. So each describe-in-words flow now shows the exact thing the words became, before the admin saves, and labels it as what OpenBot checks.
No behaviour changes. Every screen shows data the draft response already returns. No new server fields.
What each describe flow shows after a draft
In every flow, the "second reading" summary stays as the plain-language explanation, under the exact artifact.
The describe fields no longer say "OpenBot checks the X you save, not your words." The label on the artifact says that now. The Boundaries field says it drafts "the rule in CEL".
What each screen enforces
I checked the server code (as it was before #1530 moved it out of this repo) to see how each saved setting is enforced.
cel-js(computer/policy.ts), deny before allow, fails closedadmin/capabilities.ts, pure)agent-computer/src/egress.ts), pushed bycomputer/policy-network.tsapprovals/policy.ts). But a "pre-approved" rule asks the reviewer model whether the person asked for this exact action, and with auto-review on the reviewer can make an allowed action askPage sentences kept from the first change
Tests
Each test renders a returned draft and checks for the exact artifact, its label, and that the reading comes after it.
app/tests/boundaries-describe.test.tsx: on Add rule, the drafted CEL is labelled and sits between the description and Name. On a rule's page it is labelled only once something has been drafted.app/tests/admin-permissions-describe.test.tsx(new): the drafted switch (Local computer access, Members, Off) is labelled and comes before the reading.app/tests/admin-network-describe.test.tsx: the drafted entries are labelled with the reading under them. A list typed by hand is not called a draft.app/tests/bot-app-describe-grants.test.tsx(new): the chosen actions are listed and labelled. An action the app doesn't offer shows its reason.app/tests/approval-rules-describe.test.tsx: the rules are labelled and come before the reading. Only a pre-approved rule mentions the reviewer model.All 9 new or changed assertions fail on the previous head (5c2b2dd) and pass here. These suites pass: Boundaries, admin, approvals, Bot app, grants and plugins (286 tests across 45 files).
biome lint,biome formatand the app typecheck pass too.Checked in a browser
I ran the server image with its own database, and the app from this branch on 127.0.0.1, with a real OpenAI model drafting every flow. I ran all five flows end to end, and also turned on Parallel Search to get a Bot's app page. I took before and after screenshots of each flow, in light and dark, after a draft was shown. Nothing wraps badly or overflows.