[Bug]: Approving Devin's plan depends on the order of its plan-exit options, and one of them turns on bypass mode
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 62/100
- Issue 类型
- 缺陷
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- typescript
调研方向
Start by reading selectPermissionOptionId and selectAutoApprovedPermissionOption in packages/provider-acp/src/server/adapter.ts around lines 1302–1323, then trace how plan-exit permission options are selected for approval and automatic approval. Check how Devin's optionId values are handled. Done means approving a plan cannot select plan_bypass unless the user explicitly chooses it, regardless of option order.
由索引模型根据 Issue 内容生成。
描述
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Run
devin acpand create a session. - Call
session/set_modewithplan. - Prompt: "Make a one-step plan to add a file named a.txt and then ask me to approve it using your plan exit tool."
- Devin first sends a
tool_calltitled "Exit plan mode" withkind: "switch_mode", then asession/request_permissionfor the sametoolCallIdwith these options:
| optionId | kind | name |
|---|---|---|
plan_accept_edits |
allow_once |
Yes, implement plan and accept edits |
plan_bypass |
allow_once |
Yes, implement plan and bypass permissions |
reject_once |
reject_once |
No, plan needs changes |
- Compare with
selectPermissionOptionIdandselectAutoApprovedPermissionOptioninpackages/provider-acp/src/server/adapter.ts(https://github.com/pingdotgg/t3code/blob/79bca436b24a6eabb05d3d1a95348ae40d31e713/packages/provider-acp/src/server/adapter.ts#L1302-L1323).
I got the same list, in the same order, in seven sessions, including ones that entered plan mode from each of Devin's other modes (accept-edits, smart, ask, bypass). Devin also has a plan_normal option ("Yes, implement plan"), which I did not see offered. The problem doesn't depend on a particular Devin release. It applies whenever Devin offers more than one allow_once option on plan exit.
Expected behavior
Approving a plan should never put Devin into bypass mode unless the user chose that. If T3 offers only one "approve" button, it should choose plan_accept_edits (or plan_normal) by id, whatever the order.
Actual behavior
Devin gives both "yes" options the kind allow_once. T3 shows its default approval card, and both Approve and "Always allow this session" answer with the first allow_once option. Under full access, the automatic approval does the same. Today that is plan_accept_edits, which returns Devin to its default mode, so nothing goes wrong.
If Devin listed plan_bypass first, the same button would switch Devin to bypass mode, which approves every later tool call without asking. The card does not show which of the two T3 is choosing, and the user cannot pick the other.
ACP v1 says "kind is only a UI hint. The option name describes the scope" and says nothing about option order.
This is separate from #33136 and #33144, which change the "this session" choice only. #33144 leaves Approve answering with the first allow_once. It is also separate from #25553, which decides whether T3 asks before a mode switch, not which option it sends.
Possible fix
A Devin-specific choice for "accept" on plan-exit requests: prefer plan_normal, then plan_accept_edits, and never plan_bypass unless the user picked it. The automatic approval would use the same rule. A Devin approvalOptions could also show the choices with Devin's names, so the user can see and pick bypass deliberately. Matching on optionId avoids parsing the free-text name.
Impact
Minor bug or occasional failure. This is a latent risk. I have not seen T3 choose plan_bypass.
Version or commit
Current main. The code link above is pinned to a commit only so the line numbers stay correct. Not specific to a Devin version.
Environment
macOS, Apple silicon, Devin over ACP.
- 主要语言
- TypeScript
- 星标
- 24.8k
- 派生
- 6.4k
- 平均合并
- 10 小时 56 分钟
- 30 天内合并 PR
- 226
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
pingdotgg/t3code 的其他 Issue
-
[Bug]: request_secret file delivery has no trailing newline, and the tool text does not say so可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 2/5 1-3 小时 新手友好度 69/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
[Bug]: Changing the sidebar project filter collapses an expanded Settled shelf back to 10 threads未关闭
难度 2/5 1-3 小时 新手友好度 78/100
pingdotgg/t3code#34291 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 83/100
维护者通常 1 天内回复
-
via-triage
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
难度 1/5 1 小时以内 新手友好度 82/100
lingdojo/kana-dojo#33947 · 1 条评论 · 5 个 reaction ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
paperclipai/paperclip#20942 ·
维护者通常 1 天内回复
-
area: documentation good first issue package: rule-data status: accepting prs
难度 2/5 1-3 小时 新手友好度 72/100
维护者通常 1 天内回复
-
status: needs triage
难度 2/5 1-3 小时 新手友好度 85/100
mastra-ai/mastra#30109 · 2 条评论 ·
维护者通常 1 天内回复