Skip to content

Agents: store each agent's permission itself; terminals and new chats read it - #31315

Merged
brennanb2025 merged 34 commits into
mainfrom
brennanb2025/agent-permission-one-setting
Oct 23, 2026
Merged

brennanb2025 merged 34 commits into
mainfrom
brennanb2025/agent-permission-one-setting

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 23 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​1817 $\color{#cf222e}{\Huge{\mathbf{−}}}$​95 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​1722
Prod 71 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​2321 $\color{#cf222e}{\Huge{\mathbf{−}}}$​321 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​2000

ELI5

Orca used to remember an agent's permission (Ask, Auto, Yolo) by typing a flag like --dangerously-skip-permissions into that agent's Arguments box. Chats can't run flags, so they kept a second, separate copy of the setting, and the two drifted apart. Now Orca stores each agent's permission itself. Terminals add the flag when they launch, new chats start in the same mode, and the Arguments box holds only what you typed.

What Changed

The problem.

What you see now (Settings → Agents).

  • Agent Permissions uses the chat's wording: Own settings · Ask for approval · Approve for me · Full access. It applies to every agent, in terminals and new chats. With Approve for me selected, a second row, Agents without Approve for me, sets the agents that lack it.

  • Each agent has a Permissions menu showing Same as all agents · X, Use <Agent>'s own settings, and each mode that agent's CLI can take. Agents with their own choice get a badge in the list.

  • The Arguments box shows the permission flag as a chip at the start of the box. Removing the chip (×) switches that agent to its own settings. If you type a permission flag Orca recognizes, it becomes the agent's setting and moves into the chip, and a toast says so.

  • If your Arguments set permissions in a way Orca doesn't map (for example --permission-mode plan), the text stays as you wrote it. Terminals use it, and a note says chats use the Permissions menu instead.

  • New chats start in the agent's permission. An agent set to its own settings keeps today's chat behavior: the Settings → Chat default, or feat(native-chat): apply per-agent Auto permission defaults #30853's per-agent copy. That page's description now says so.

  • "Use <agent>'s own settings" means Orca adds no permission flag, and the agent's own config (Claude permissions.defaultMode, Codex config.toml) applies.

  • Ask is now an explicit flag where the CLI has one:

    • Claude and Grok: --permission-mode default
    • Codex: -a on-request -s workspace-write -c approvals_reviewer=user, matching what an Ask chat states

    Agents without an Ask flag offer only their own settings and Full access.

One-time move. At load, each profile's saved Arguments are read once:

  • Orca's own flags become the stored choice and are cut from the text. A flag is cut only when the posix, PowerShell and cmd parsers all agree on it, and the cut keeps every other word.
  • Arguments with no flag become "own settings". Those terminals already passed no flag, so nothing changes for them.
  • Text that sets permissions some other way is left whole, on "own settings".
  • Goose's GOOSE_MODE=auto becomes Full access. Environment names match exactly on POSIX, case-insensitively on Windows, and conservatively when the execution platform is unknown; other entries are kept.
  • The most common choice becomes the all-agents one, and every other agent gets its own choice.
  • Terminals launch exactly what they launched before the move.
  • Where an agent's terminal and new-chat settings differed, terminals win (decided by Brennan). For example, a user with Full access terminals and Ask chats now gets Full access chats for that agent.

Older clients and hosts.

  • Older clients, the phone, and mobile resume still read Arguments with the flag included, in both settings.get and settings.getAgentLaunch, and Goose's env the same way.
  • When an older client writes Arguments as it sees them, the host translates the write: deleting the published flag means "own settings", and a different Orca flag becomes the choice. This covers the arguments, permissions (Manual/Auto/Yolo), environment and settings.update writes.
  • New clients send the new permission / user-arguments mutations only to hosts that advertise settings.agent-permission.v1. Older hosts keep the existing Agents page and mutations.
  • Browser-saved settings in the web client get the same one-time move.

Mechanism.

  • Two saved fields: agentPermissionDefault and agentPermissionOverrides. The presence of agentPermissionDefault marks a profile as moved, so there is no third flag.
  • One resolver: an agent's own choice, else the all-agents one. A choice the agent's CLI can't state resolves to its own settings, so Orca never claims a mode it doesn't pass.
  • The flag is composed in the single launch chokepoint, resolveTuiAgentLaunchArgs / resolveTuiAgentLaunchEnv, which now takes the settings slice.
  • Settings without a stored choice (an older host's published text) pass through unchanged.

Why

This removes the structural fact behind #20977, #23853, #23387, #28100, #30853 and #30914's neighbours: a permission stored as free text that every reader re-parses, plus a second copy for chats. The flag-to-setting conversion happens on the host's write path, so every writer gets the same rule: old desktop clients, web, phone and CLI.

Differences from the common pattern, labelled:

  • Per-agent choice instead of a project-level default. Intended. Orca launches the same agents in terminals and chats, and users asked for one agent to differ from the rest.
  • "Use the agent's own settings" as a choice. Intended. Most users also run these agents from their own shell with their own config, and Orca terminals already passed no flag by default.
  • Chats of agents on "own settings" still use Settings → Chat. Temporary. The follow-up Let chats follow the agent permission setting #32334 makes those chats run the agent's own config and show the mode the agent reports (STA-11280), removes feat(native-chat): apply per-agent Auto permission defaults #30853's per-agent copy, and makes Settings → Chat display-only.
  • Older hosts keep the old Agents page (Manual / Auto / Yolo). Intended mixed-version compatibility. The new page is enabled only when the host advertises typed storage; old servers keep their existing launch path.
  • Conservative free-text parsing and host-specific environment identity. Intended. Exact user command preservation across POSIX, PowerShell and cmd, plus independently updated execution hosts, requires preserving uncertain text and using the execution host's environment-name rules.
  • Acknowledged edits, explicit queued Reset and remote durable writes. Intended. Failed saves retain the requested draft; Reset remains an explicit action, and paired writes acknowledge persistence.
  • The all-agents switch resets per-agent choices. Intended. This matches today's switch. Turning on Approve for me keeps agents without it on what they had, as today.

Linked Issue

Tracked in #13081. Related: #23853, #23387, #30853, #30449 (chats never translate free-text CLI flags; unchanged here), #24508 (earlier stale attempt at typed storage; its classifier and cut checks are reused here).

Visual Proof

Before, main-created preset:

Before

After upgrade:

After

The review status comment includes real agent replies, restart/History, WSL and carried migration/paired-host screenshots.

Testing

  • src/shared/tui-agent-permission-choice.test.ts covers:
    • the one-time move from real saved shapes: preset flags, --model opus plus the flag, empty Arguments, an unrecognized permission flag, Goose env under different capitalisation, quoted text
    • the launch contract for each choice
    • a legacy host's text passing through unchanged
    • bulk Approve for me keeping non-Auto agents
    • an older client deleting or swapping the published flag
    • new-chat seeding
  • Existing host-settings, persistence and durability tests were updated to assert what terminals actually launch.
  • Real Claude and Codex launches/replies, native startup, History, account restart, previous-build upgrades/restarts, paired-host/mixed versions and WSL typed launch/guest argv are accepted. QA source 64a3fcca0ec; earlier unchanged-flow evidence on 70a4dfb3054 carries under the current QA rules. Later commits d21945388ae and 155f39cea26 are tests only; merges 53310be9a31 and 5ce507820a6 retain runtime evidence.
  • Fork, work-item, mobile startup and generated argv are covered by their startup/action/composition contracts. No mobile screen appearance changed. Empty/plan migration cases exercise actual profile/browser loaders and reload. Recorded Goose/Grok/Gemini contracts cover agent-specific branches on shared code.
  • Final integration ran 17 renderer persistence/conversion tests through tc-gate; its scoped main-merge hook passed. Full final-head CI is tracked in the status comment.
  • OMP implicit-effort refusal is inherited and tracked in STA-11450; its explicit-effort attempt reached a provider503, not a successful reply. Own native-chat config parity remains temporary until Let chats follow the agent permission setting #32334 / STA-11280; this PR is usable alone.

AI Disclosure

Review

Full review: six historical rounds plus the accepted bounded correction; final source/reference/performance/readiness reconciliation complete. Fixed raw flag ownership, environment identity, editor acknowledgement/Reset and repeated parsing/projection work. The one review status comment records the full test/runtime mapping, inherited limitations, evidence heads and final CI.

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

Notes

Author: Brennan Benson (@BrennanKB5)

Checklist

  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes
  • Cross-platform, SSH/remote, and path/shortcut impact considered

…flags into Arguments

Terminals and new chats read one stored choice per agent (Use the agent's own
settings, Ask for approval, Accept edits, Approve for me, Full access). Orca adds
the flag at launch; Arguments hold only the user's own text. A one-time move
lifts Orca's flags out of saved Arguments. Older clients still see and write
the flag as part of Arguments; the host translates.
@brennanb2025
brennanb2025 marked this pull request as ready for review October 21, 2026 01:12
@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ff654379-b03b-4a90-b972-5586cb0c0e22
📥 Commits

Reviewing files that changed from the base of the PR and between 35670d9 and 1fb4abf.

📒 Files selected for processing: 1
  • src/renderer/src/hooks/composer-state/folder-submit-orchestration.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 3 remain after this review.

📝 Walkthrough

The change adds typed permission defaults and per-agent overrides for TUI agents. It migrates legacy permission flags from saved arguments and environment settings, then composes launch profiles from typed choices and user-owned values. Runtime, startup, and chat-permission code now resolves settings through the composed profile. The settings interface and onboarding flow expose permission choices, while host capability checks gate typed permission mutations.

Priority: ➖ Normal

Merge Risk: 🔵 Low · up to 1fb4a

The settings UI can hide an effective bypass flag and show inaccurate new-chat permission feedback, but actual permission resolution remains intact.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 50.93% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 108 functions across 68 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly summarizes the primary change: per-agent permission storage shared by terminals and new chats.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description check Passed The pull request description is detailed and covers the required sections, including the user impact, implementation, rationale, linked issue, visual proof, testing, review notes, compatibility consid…
Full details: Description check

Explanation

The pull request description is detailed and covers the required sections, including the user impact, implementation, rationale, linked issue, visual proof, testing, review notes, compatibility considerations, and checklist items. The Testing checkboxes and several checklist items are not explicitly marked, and the AI Disclosure section is empty, but these omissions are non-critical because the description provides substantial testing and review evidence.

✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 608caf23-e8a4-4c6b-91b0-53540483a5e6
📥 Commits

Reviewing files that changed from the base of the PR and between 70b2197 and 80c9e5a.

📒 Files selected for processing: 59
  • mobile/src/session/ai-vault-resume-launch.ts
  • src/main/native-chat/agent-session-wire/at-rest-command-context.ts
  • src/main/native-chat/structured-agent-configured-args.ts
  • src/main/orcad/orcad-account-services.ts
  • src/main/persistence-settings-update.test.ts
  • src/main/persistence/applying-settings/settings-update.ts
  • src/main/persistence/loading-store/normalize-loaded-global-settings.ts
  • src/main/persistence/loading-store/prepare-loaded-profile-settings.ts
  • src/main/preflight/codex-workspace-relative-path.test.ts
  • src/main/runtime/agent-launch-settings-rollback.ts
  • src/main/runtime/runtime-client-agent-launch-settings-durability.test.ts
  • src/main/runtime/runtime-client-agent-launch-settings.test.ts
  • src/main/runtime/runtime-client-settings.ts
  • src/main/runtime/runtime-store-contract.ts
  • src/main/runtime/session-construction/agent-session/get-agent-session-execution-namespace.ts
  • src/main/runtime/structured-agent-launch-support.ts
  • src/main/runtime/workspaces/workspace-process-listing.ts
  • src/main/startup/main-process-runtime-service.ts
  • src/renderer/src/components/onboarding/use-onboarding-flow-persistence.ts
  • src/renderer/src/components/onboarding/use-onboarding-yolo-permissions.ts
  • src/renderer/src/components/settings/AgentCatalogRow.tsx
  • src/renderer/src/components/settings/AgentLaunchDefaultsEditor.tsx
  • src/renderer/src/components/settings/AgentLaunchSettingsCatalog.tsx
  • src/renderer/src/components/settings/AgentPermissionChoiceControls.tsx
  • src/renderer/src/components/settings/agent-launch-settings-transport.ts
  • src/renderer/src/components/settings/agent-row-permission-model.ts
  • src/renderer/src/components/settings/chat-permission-search.ts
  • src/renderer/src/hooks/composer-state/folder-submit-orchestration.ts
  • src/renderer/src/hooks/composer-state/quick-startup-plan.ts
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/lib/agent-account-restart-startup.ts
  • src/renderer/src/lib/ai-vault-antigravity-reference-startup.ts
  • src/renderer/src/lib/launch-agent-in-new-tab.ts
  • src/renderer/src/lib/launch-parity-workspace-start.test-fixture.ts
  • src/renderer/src/lib/launch-work-item-direct-agent.ts
  • src/renderer/src/lib/onboarding-folder-agent-startup.ts
  • src/renderer/src/store/slices/repos-onboarding-folder-startup.test.ts
  • src/renderer/src/store/slices/settings.ts
  • src/renderer/src/web/preload-api/web-preference-normalization.ts
  • src/renderer/src/web/preload-api/web-preferences-store.ts
  • src/shared/agent-chat-permission-host-support.ts
  • src/shared/agent-chat-permission-mode.ts
  • src/shared/agent-launch-permission-updates.ts
  • src/shared/agent-launch-runtime-capability.ts
  • src/shared/agent-launch-settings.ts
  • src/shared/agent-startup-plan-inputs-extra-agent-args.spec.ts
  • src/shared/agent-startup-plan-inputs.ts
  • src/shared/ai-vault-resume-startup.ts
  • src/shared/default-global-settings.ts
  • src/shared/global-settings-base.ts
  • src/shared/native-chat-session-option-defaults.ts
  • src/shared/rpc-contract/agent-launch-settings-params.ts
  • src/shared/tui-agent-auto-permissions.test.ts
  • src/shared/tui-agent-launch-defaults.spec.ts
  • src/shared/tui-agent-launch-defaults.ts
  • src/shared/tui-agent-permission-choice.test.ts
  • src/shared/tui-agent-permission-choice.ts
  • src/shared/tui-agent-permission-lift.ts
  • src/shared/tui-agent-startup.spec.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

🟡 Minor · Limit the permission toast to terminals. · AgentLaunchSettingsCatalog.tsx:130-135

src/renderer/src/components/settings/AgentLaunchSettingsCatalog.tsx:130-135
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Limit the permission toast to terminals.

claude-agent-teams is a catalog agent with recognized permission flags, but it has no registered chat permission support. Its inferred mode therefore cannot apply to new chats.

🐛 Suggested fix
-          '{{agent}} set to {{mode}} in terminals and new chats.',
+          '{{agent}} set to {{mode}} in terminals.',

ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 9284077b-9a12-4302-baf0-fdcdda3ab148
📥 Commits

Reviewing files that changed from the base of the PR and between 270236f and 5b31751.

📒 Files selected for processing: 39
  • mobile/src/session/ai-vault-resume-launch.ts
  • src/main/codex/codex-structured-launch-args.ts
  • src/main/persistence/loading-store/prepare-loaded-profile-settings.ts
  • src/main/runtime/runtime-client-agent-launch-settings-durability.test.ts
  • src/main/runtime/runtime-client-settings.ts
  • src/renderer/src/components/settings/AgentCatalogRow.tsx
  • src/renderer/src/components/settings/AgentLaunchSettingsCatalog.tsx
  • src/renderer/src/components/settings/AgentLaunchSettingsSection.test.tsx
  • src/renderer/src/components/settings/AgentLaunchSettingsSection.tsx
  • src/renderer/src/components/settings/AgentPermissionChoiceControls.tsx
  • src/renderer/src/components/settings/ChatBehaviorSetting.test.tsx
  • src/renderer/src/components/settings/ChatBehaviorSetting.tsx
  • src/renderer/src/components/settings/ChatPermissionSetting.tsx
  • src/renderer/src/components/settings/chat-permission-search.ts
  • src/renderer/src/hooks/composer-state/quick-startup-plan.ts
  • src/renderer/src/hooks/settings-navigation-build-options.ts
  • src/renderer/src/hooks/settings-navigation-interface-sections.ts
  • src/renderer/src/hooks/useSettingsNavigationMetadata.ts
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/lib/agent-account-restart-startup.ts
  • src/renderer/src/lib/ai-vault-antigravity-reference-startup.ts
  • src/renderer/src/lib/launch-agent-in-new-tab.ts
  • src/renderer/src/lib/launch-work-item-direct-agent.ts
  • src/renderer/src/lib/onboarding-folder-agent-startup.ts
  • src/renderer/src/runtime/structured-agent-session-host-capability.ts
  • src/renderer/src/web/preload-api/web-preference-normalization.ts
  • src/shared/agent-chat-permission-mode.ts
  • src/shared/agent-chat-permission-support.ts
  • src/shared/agent-launch-permission-updates.ts
  • src/shared/agent-launch-settings.ts
  • src/shared/agent-permission-args.ts
  • src/shared/agent-permission-env.ts
  • src/shared/agent-session-option-agent-args.ts
  • src/shared/agent-startup-plan-inputs.ts
  • src/shared/ai-vault-resume-startup.ts
  • src/shared/tui-agent-launch-defaults.ts
  • src/shared/tui-agent-permission-choice.test.ts
  • src/shared/tui-agent-permission-choice.ts
  • src/shared/tui-agent-permission-lift.ts
🚧 Files skipped from review as they are similar to previous changes: 2
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/components/settings/AgentCatalogRow.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.

@brennanb2025

Copy link
Copy Markdown
Contributor Author

Permission flags used to double as saved settings inside Arguments, while new chats kept a separate choice. That allowed terminal and chat permissions to drift. This PR stores one typed permission choice per agent, keeps user Arguments separate, and composes supported flags when launching. Existing profiles migrate conservatively; older clients and paired hosts retain their supported launch path.

The full review completed six rounds, followed by the accepted bounded correction. Fixes cover required-option operands and raw flag ownership, Codex config aliases, host-specific Goose environment names, acknowledged Arguments/Environment editing and queued Reset, durable remote settings writes, and repeated parsing/projection work. The final reference, performance and readiness source checks found no remaining attributable P0/P1.

Evidence and heads. Real Claude and Codex runs exercised startup/replies, History continuity, account-switch restart, previous-build upgrades/restarts and mixed desktop peers. Current compiled 64a3fcca0ec also exercised onboarding Own → Claude reply, native Claude Auto → reply, non-git Codex Full with a preserved custom argument and real result, and WSL Claude Ask with --tools Read: actual guest argv contains the permission flag once. Historical 70a4dfb3054 evidence carries for unchanged flows, including both mixed-version directions and the collected mixed second restart. Test-only commits d21945388ae and 155f39cea26, plus main merges 53310be9a31 and 5ce507820a6, preserve this evidence. The two final Settings conflicts retain both sides; 17 affected renderer tests passed. Full CI is green on final head 5ce507820a6: 47 successful and 15 skipped checks, no failed or pending checks. The PR is mergeable/CLEAN, out of draft, with no unresolved review threads.

Coverage under the changed-flow QA rules. These are tests, not claimed runtime passes:

Consumer Test coverage
Orca-native Fork ai-vault-session-fork-startup.test.ts, ai-vault-session-launch-actions.test.ts, structured-chat-cli-fork.test.ts: recorded home/cwd, fork identity and action routing, materialization/refusals
Direct work-item launch launch-work-item-direct-agent.test.ts: global arguments fallback, explicit per-action arguments, startup delivery
Generated flags/user Arguments/older peers tui-agent-permission-choice.test.ts, codex-structured-launch-args.test.ts: exact composition, carrier ownership, legacy projection/deletion/swap and native argv
Saved settings and migration, including empty and plan text Typed-choice tests plus actual profile/browser normalization tests (normalize-loaded-global-settings.test.ts, web-chat-permission-normalization.test.ts) and reload
Settings failure/retry/Reset Renderer conversion/persistence and runtime SQLite durability tests; existing desktop screenshots carry
Phone History/startup consumer mobile/src/session/ai-vault-resume-launch.test.ts: settings args/env through shared plan, recorded/managed home, create/send. No mobile screen appearance changed, so no mobile screenshot run is needed
Main-introduced WSL account-switch path agent-account-restart-startup.test.ts (15 tests); the real typed WSL launch and guest argv are separately verified

Intended differences from the common pattern: per-agent Own choice and supported narrowing at each surface; conservative three-shell text ownership; execution-host environment identity (POSIX exact, Windows folded, unknown conservative); capability-gated writes with old-server fallback; acknowledged queued Reset and remote durable writes. These preserve terminal commands, mixed versions and host ownership. Temporary: Own native chats retain the existing Chat default until #32334 / STA-11280. Merging this PR alone ships usable typed permissions; Own native-config parity follows there.

Deferred/inherited: Command-field draft/Escape behavior, unusual __proto__ environment round-tripping and existing remote deadline/cached-fallback limits remain outside this change. OMP's implicit-effort refusal reproduced on main and is tracked in STA-11450; its explicit-effort attempt reached the provider, which returned 503. That attempt is not a successful reply. Codex History follow-up encountered a live-session lock; an embedded Codex fork succeeded but is not evidence of Orca-native Fork. The corresponding startup/composition contracts above provide the required coverage. No new provider login step changed.

For Brennan’s review: the permission resolver and precedence, conservative flag extraction, and legacy/new write translation.

Settings before / after and Environment reopen

Before, main-created preset:
Before: permission stored in Arguments

After upgrade, typed permission with preserved Arguments:
After: permission control and generated chip

Environment after Reset and reopen

Current compiled64a3: onboarding, real Claude/Codex replies and WSL

Onboarding permission off / Own:
Onboarding Own

Onboarding Claude reply

Non-git Codex Full, custom argument and actual result:
Codex real reply

Native Claude Auto:
Claude native reply

WSL Claude Ask, custom Read tools and actual file/read reply:
WSL Claude result

Carried History, restart, mixed migration and paired-host evidence

History same-session resume:
History resume result

Account-switch restart:
Restart actual result

Mixed migration second restart on70a4, native then CLI:
Native continuation
CLI continuation

Earlier57184 paired-host real terminal and native replies (separate from70a4 mixed-version receipts):
Paired terminal
Paired native chat

Earlier controlled main / branch real-reply comparison

Claude on main:
Main Claude

Claude on the branch:
Branch Claude

Codex on main:
Main Codex

Codex on the branch:
Branch Codex

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