Repository navigation
fix(devin): skip workspace trust for Orca launches - #21925
Conversation
|
Understand this PR’s impact Explore downstream dependencies and potential security impact with Blast Radius. Note Reviews pausedIt 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 Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 5 remain after this review. 📝 WalkthroughWalkthroughDevin launch defaults now include Priority: ➖ Normal Severity of issue fixed: Medium 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
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. Comment |
There was a problem hiding this comment.
Important
One test this change invalidates was not updated, so pnpm test (CI) is red on this head. Please update it before merging.
Reviewed changes
- Devin automatic-permissions args —
YOLO_TUI_AGENT_ARGS.devingains--respect-workspace-trust falsealongside--permission-mode bypass, so Orca-launched Devin skips its keystroke-eating workspace-trust menu (fixes #15859). The flag is real and documented for exactly this use. - Shared startup tests —
src/shared/tui-agent-startup.test.tsassertions updated to the new full command.
⚠️ Renderer startup test still pins the old Devin command
The shared test was updated, but src/renderer/src/lib/tui-agent-startup.test.ts builds the same Devin plan through resolveTuiAgentLaunchArgs('devin', null) and still asserts the old command. It fails on this head (I ran it: 1 failed / 25 passed), and config/vitest.config.ts includes src/**/*.test.ts, so the full pnpm test run is red.
Technical details
# Update the renderer Devin startup assertion
## Affected sites
- `src/renderer/src/lib/tui-agent-startup.test.ts:244-264` — `launches Devin first and injects the prompt after startup` passes `agentArgs: resolveTuiAgentLaunchArgs('devin', null)` and expects `launchCommand`/`agentCommand` = `"devin '--permission-mode' 'bypass'"` and `agentArgs` = `'--permission-mode bypass'`.
## Evidence
- `ORCA_BACKGROUND_LAUNCH=1 pnpm test src/renderer/src/lib/tui-agent-startup.test.ts` → 1 failed / 25 passed; received `devin '--permission-mode' 'bypass' '--respect-workspace-trust' 'false'`.
- `config/vitest.config.ts:31-38` `include` covers `src/**/*.test.ts`, so this runs in CI.
## Required outcome
- Assert the same command the shared test does: `devin '--permission-mode' 'bypass' '--respect-workspace-trust' 'false'` with `agentArgs: '--permission-mode bypass --respect-workspace-trust false'`.ℹ️ The new default does not reach already-migrated profiles
Changing an existing agent's value in YOLO_TUI_AGENT_ARGS only affects fresh installs and profiles that predate the yolo-defaults migration. migrateAgentYoloDefaults preserves any already-stored agentDefaultArgs.devin verbatim, and resolveTuiAgentLaunchArgs returns configured args whenever the key exists — so users whose profile stores the old --permission-mode bypass keep it and still hit the trust menu (the issue reporter's command was exactly devin '--permission-mode' 'bypass').
Technical details
# Decide whether existing profiles should receive the new Devin flag
## Affected sites
- `src/shared/tui-agent-permissions.ts:29` — the value changed here is only a default.
- `src/main/persistence/applying-settings/terminal-settings-migrations.ts:129-146` — `migrateAgentYoloDefaults` keeps every present `agentDefaultArgs` entry as-is and only fills absent keys (with `''`).
- `src/shared/tui-agent-launch-defaults.ts:114-126` — `resolveTuiAgentLaunchArgs` returns the configured value verbatim when the key exists, so a stored `'--permission-mode bypass'` beats the new default.
## Required outcome
- Establish whether #15859 must be fixed for users whose profile already stores `agentDefaultArgs.devin`. If so, this needs a value-level migration (analogous to the `UNSUPPORTED_TUI_AGENT_ARGS` sanitation) or a stored-default version stamp.
## Open questions for the human
- Is fresh-install-only scope intended for a default-args change, or is a one-time migration for existing yolo profiles expected?DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
|
Follow-up verification (raw CLI evidence): The fixed command was run in a fresh temporary directory under a PTY; timeout 124 means the process remained running until the verification timeout. |
There was a problem hiding this comment.
Actionable comments posted: 1
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Advanced
Run ID: de27b806-524c-4c72-b3c6-3a9a0baaf672
📥 Commits
Reviewing files that changed from the base of the PR and between dce7ee93e23fb9ff5e6831fcde2d688f303a64ca and 441cfd9a0a83005ca3b249d2edb3028ccc1b641c.
📒 Files selected for processing (3)
docs/readme/README.fr.mddocs/readme/README.ko.mddocs/readme/README.zh-CN.md
Included review availability: Your plan provides up to 10 included reviews per hour; 2 remain after this review.
There was a problem hiding this comment.
ℹ️ No critical issues — one persistence gap inline.
Reviewed changes
- Value-level Devin migration —
migrateAgentYoloDefaultsnow rewrites a storedagentDefaultArgs.devinof--permission-mode bypassto the new default including--respect-workspace-trust false, closing the prior review's fresh-install-only gap. - Renderer startup test —
src/renderer/src/lib/tui-agent-startup.test.tsnow asserts the full command, resolving the prior review's failing-test finding. - Migration unit test — added coverage for the already-migrated profile rewrite.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
|
Addressed the review findings in commit |
There was a problem hiding this comment.
Important
This PR now carries an unrelated docs commit that duplicates a fix already merged to main, so it will conflict on rebase and currently leaves the translated READMEs self-contradictory. Suggest dropping it from the branch; details inline.
Reviewed changes
- Unrelated WeChat QR docs commit —
441cfd9repoints the first WeChat QR<img>indocs/readme/README.{fr,ko,zh-CN}.mdfromwechat-qr-group8.jpgtowechat-qr-group9.jpgwhile leaving the group-8alttext and copy in place.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
1bb8866 to
ac6baab
Compare
4fe5c5f to
53e76a5
Compare
There was a problem hiding this comment.
ℹ️ No critical issues — one test-coverage suggestion inline.
Reviewed changes
- Persisted the Devin trust-flag correction —
prepareLoadedProfileSettingsnow marks state dirty whenever the storedagentDefaultArgs.devindiffers from the migrated value, so an already-migrated profile's corrected args reach disk instead of the migration re-running on every load (4fe5c5f).
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏

ELI5
Devin currently asks whether to trust every Orca workspace, then exits when the prompt is not accepted. Orca already starts Devin in its automatic-permissions mode, so this adds Devin's documented flag to skip that prompt for this launch.
What Changed
--respect-workspace-trust falseto Orca's Devin automatic-permissions arguments.Before, an Orca Devin launch in a new workspace could stop at
Trust <workspace>?. After, it starts directly and remains available for the prompt Orca sends.Why
Devin's official CLI reference documents
--respect-workspace-trust [true|false]and specifically recommends--respect-workspace-trust falseto skip the check in scripts and CI. A per-launch argument keeps this behavior scoped to Orca; changing Devin's global config would also change standalone Devin sessions.Reference: https://docs.devin.ai/cli/reference/commands.md
Linked Issue
Fixes #15859
Visual Proof
The proof uses fresh temporary directories. Raw observations from the live CLI:
The attached image is a generated summary of CLI observations, not an Orca screenshot. This was not an end-to-end rendered Orca test: the PTY capture contains terminal initialization sequences, so surviving the timeout alone does not establish interactive readiness or successful prompt delivery. Windows, Linux, and SSH were not manually exercised.
Testing
2026.8.18 (16737566)in fresh temporary directories.ORCA_BACKGROUND_LAUNCH=1 pnpm test src/shared/tui-agent-permissions.test.ts src/shared/tui-agent-startup.test.ts(59 tests passed)ORCA_BACKGROUND_LAUNCH=1 pnpm tc:webpnpm run check:code-quality:changed(0 new findings)pnpm exec oxfmt --write src/shared/tui-agent-permissions.ts src/shared/tui-agent-startup.test.tsReview
The change is limited to Devin's automatic-permissions launch arguments. It applies equally to local, SSH, and other execution hosts because the flag is part of the command sent to Devin; no platform-specific path or UI behavior changes.
Agent skill upstream boundary
Notes
Includes one generated English catalog entry ("Stop generating") required by the current base branch; the missing entry caused the static-analysis gate to fail. The superseded WeChat README edits were removed from this PR.
No changes are needed for related Claude continuation issues; those were handled separately by the
--prefillPR.Checklist