Skip to content

fix(core): respect permission mode for cards and page publishing - #3561

Merged
bobleer merged 1 commit into
GCWing:mainfrom
bobleer:bob/presentation-permission-mode
Oct 27, 2026
Merged

bobleer merged 1 commit into
GCWing:mainfrom
bobleer:bob/presentation-permission-mode

Conversation

@bobleer

@bobleer bobleer commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Desktop cards with command data sources and Page publishing/deployment requested fresh approval even in Full Access mode. These tools now request fresh approval only in Ask mode; Auto Approve and Full Access proceed without an additional confirmation. Explicit policy denials remain authoritative.

Type and Areas

Type: bug fix

Areas: Rust core tool permissions, desktop cards, Pages

Motivation / Impact

The tools now read the turn's resolved permission mode instead of unconditionally setting requiresFreshApproval. Ask mode still requires a new decision for each call, including when a policy allow or remembered grant exists. Tool descriptions also direct the agent to use the permission system rather than ask for an extra confirmation after the user has already requested publication.

Verification

  • Passed 32 focused tests:
    cargo test --locked -p openbitfun-core --no-default-features --features agent-runtime,git,tools-pages --lib -- presentation_tools_follow_permission_mode desktop_card_tool::tests page_publish_tool::tests page_deploy_tool::tests tool_context_runtime::task_context_tests
  • Passed pnpm run fmt:rs and git diff --check.
  • CI passed: Linux/macOS/Windows Rust and CLI checks, frontend verification/build, and the Rust/CLI validation gate. Repository object-size checks also passed; two packaging checks were skipped by the existing build-impact rules.
  • New regression coverage exercises the three permission modes through real tool intents and permission orchestration, checks no interactive requests remain in non-Ask modes, and preserves explicit denials.
  • Covered legacy context fallback, mode aliases, and Page operations without an open workspace.
  • Remote coverage: local fixtures verify remote-workspace directory/command rejection and desktop-card rejection for mobile/bot remote control. Live SSH, relay, Peer Device Mode, and Detached Dispatch were not exercised.

Reviewer Notes

No persisted fields, protocol shapes, host availability gates, or filesystem routing changed. Unknown/missing mode context keeps the existing interactive fallback, with support for the legacy auto-approve flag. AI-assisted implementation; 32 focused local tests and CI passed. Follow-up review covered mode propagation, legacy fallback, subagent inheritance, policy denials, and remote restrictions; no additional changes were needed.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

@bobleer
bobleer merged commit 438b134 into GCWing:main Oct 27, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant