ConnectOnionAll Posts
Remote Browser

A Permission Change Has One Public Truth

Emit the final permission state after a downgrade so stopping and reopening native provider work cannot expose an intermediate authority.

By ConnectOnion Team · 2 min read · 409 words

Remote BrowserPermissionsRelease

RC4 passed its ordinary permission tests. It could lower a Work Room from Full Access to Auto, persist the narrower catalog, reject a stale elevated choice, and reconnect without granting new authority. Then the release gate added one operation before the downgrade: stop a real native Codex follow-up.

Stop worked. Codex received the provider-scoped interrupt rather than an outer agent interrupt, the run settled as Stopped, and the Work Room restored its composer. But the terminal continuation did not repeat an unchanged permission catalog. When the outer mode changed next, the Host normalized that continuation under the old Full Access ceiling, appended a repair snapshot, committed Auto, and appended the real downgrade. Both events were valid in isolation. Together they exposed two answers to one permission change.

That distinction matters because a network client does not observe a database transaction as an abstract final state. It observes frames in order, may render or persist each frame, and may reconnect between them. An intermediate snapshot with broader authority is not harmless merely because a narrower snapshot is scheduled behind it. The first public answer can become the durable answer at exactly the boundary where delivery, coalescing, or reconnection changes.

RC5 makes the transaction match the user's action. The Host normalizes ordinary session policy without publishing provider authority, commits the requested outer mode, and then reconciles every affected Work Room exactly once. A Full Access to Auto change therefore emits one provider permission revision with Ask for approval active and Full Access disabled. A Read-only change emits one revision with every broader choice disabled. There is no old-ceiling repair for the browser to misunderstand.

The client has a matching responsibility. A completed, failed, or stopped Work Room is still a remote Codex or Claude Code client, so losing its permission selector and input box is not an acceptable simplification. O Chat now retains the latest Host-verified catalog only inside the same explicit Work Room and provider. A newer terminal snapshot replaces that fallback immediately; the browser never invents authority or borrows it from another conversation.

The regression test recreates the exact sequence that RC4 exposed, for both Auto and Read-only. The release gate will recreate it again with public RC5 bytes, native Codex and Claude Code processes, outer-mode changes, reconnects, and desktop and mobile screenshots. The lesson is broader than this bug: one authority-changing user action must have one externally observable truth, and that truth must already be the final one.

Star us on GitHub

If ConnectOnion saves you time, a ⭐ goes a long way — and earns you a coffee chat with our founder.