Files
openclaw/extensions/codex/src/command-authorization.ts
T
Peter Steinberger 4b0d573437 feat: session permission modes with worktree-scoped defaults (#124909)
* feat(gateway): add session permission modes

* feat(agents): enforce session permission policies

* test: cover session permission modes

* docs: explain session permission modes

* fix(agents): preserve apply patch default root

* feat(codex): map session permission modes

* feat(ui): add session permission controls

* test: cover session permission surfaces

* fix(agents): enforce session permissions from entry

* fix(codex): pass params object to requirements reader

* fix(codex): honor session permission modes

* fix(codex): preserve exec approval floors

* chore: revert changelog edit (release-owned)

* test: align full-mode promotion with upstream semantics

* chore(protocol): regenerate session permission models

* docs: register session permission modes

* fix(ui): use shared permission dropdown

* fix(sessions): restore permission mode contracts

* fix(ci): record session permission startup JS growth in the budget baseline

* refactor(agents): prepare session exec mode at dispatch

Host dispatch owns permissionMode→exec override preparation; the codex
plugin consumes prepared facts and the SDK barrel export is removed,
keeping the plugin-sdk surface at its recorded budget.

* test: type exec mode fixtures as ExecMode

* fix(codex): require admin scope for yolo permissions

* test: isolate codex permission command state

* ci: refresh PR checks against current main

* ci: refresh checks after gateway test repair

* test: fix main-fallout CI suites

* chore: refresh CI merge ref

* fix(worker): fence permission-mode cloud placements

* fix(sessions): clear worktree policy on detach

* chore(protocol): generate session permission mode enum

* test(gateway): type dispatch fixtures from session entries

* fix(ui): allow clearing session permission mode

* chore: refresh CI merge ref

* fix(ci): record permission picker startup growth in the budget baseline

* fix(gateway): gate session root projections
2026-08-17 04:37:35 -07:00

20 lines
802 B
TypeScript

import type { PluginCommandContext } from "openclaw/plugin-sdk/plugin-entry";
type CodexHostMutationAuthContext = Pick<
PluginCommandContext,
"gatewayClientScopes" | "senderIsOwner"
>;
export const CODEX_NATIVE_EXECUTION_AUTH_ERROR =
"Only an owner or operator.admin can control Codex native execution.";
export const CODEX_FULL_PERMISSIONS_AUTH_ERROR =
"Full Codex permissions require operator.admin. Choose Admin in the Control UI permission picker, or use an admin-authenticated CLI.";
export function hasCodexAdminScope(ctx: CodexHostMutationAuthContext): boolean {
return ctx.gatewayClientScopes?.includes("operator.admin") === true;
}
export function canMutateCodexHost(ctx: CodexHostMutationAuthContext): boolean {
return ctx.senderIsOwner === true || hasCodexAdminScope(ctx);
}