Repository navigation
Description
Environment
FlyBot on DSH 0.2.0-rc.2, Chinese locale. Group FlyBot 交付组 (Bots Chief / Maintainer / SelfTest / Release), roster panel.
Steps to reproduce
- A member Bot (here
Release) runs abashcommand in a group that needs a sandbox escalation. - The roster shows
等你批准with a card: titlebash,Locate release sections in AGENTS.md, reasonescalate sandbox to danger-full-access: 只读检索…, commandgrep -n -i "release\|changelog.... - The card offers only
拒绝(Reject) and允许一次(Allow once).
Actual
Every matching request asks again. The owner: "总是一直问我审批权限,要能永久批准" / "紧急修复这个".
Expected
The owner can grant a standing approval from the card with an explicit button, so later matching requests are allowed without asking, and can revoke it later.
Owner decision
Owner decision 2026-10-20 20:11 (Asia/Shanghai, Danyang / Birfy): add a permanent "Always allow" approval to the approval card.
Owner update 2026-10-20 20:12: it must also work for a whole group (要能对群组生效). The card offers a scope choice: Always allow for this Bot (zh 此 Bot 始终允许) and Always allow for this group (zh 本群始终允许, shown when the Bot's request comes from a group). Group scope: all of the owner's Bots in that group get that permission kind auto-allowed. Owner-only (the Bot's owner), persisted across restarts, revocable from Group settings (group grants) and Bot settings (per-Bot grants). Approval stays an explicit UI control, never a typed reply (#349).
Where it sits
- Card:
core/src/client/member-status.jsApprovalCard(Reject / Allow once), andcore/src/client/inbox.jsInboxCard. - Answer path:
actions.answerApproval→approval-answer(core/src/host/channel.js) →core/src/host/approvals.jsanswerApproval, which maps onlyallow→allowed-onceandreject→rejected. - DSH:
ApprovalOutcomeis'allowed-once' | 'rejected' | 'cancelled' | 'unavailable'(@deepseek-ai/dsh-user-approval);ApprovalPolicyis'ask' | 'never'. DSH has no persistent allow outcome, so the standing grant lives in FlyBot and answers future matchingapproval/requestevents withallowed-oncethrough the documented waterfall (no DSH patch).
Suggested direction
Permission kind = tool name + sandbox escalation mode parsed from the DSH reason (escalate sandbox to <mode>:), e.g. bash · danger-full-access. Store grants on the Bot record / room record; check them in the approval/request listener before asking.
Activity
Birfy commentedon Oct 20, 2026
Claimed (owner-ordered urgent fix, 2026-10-20 20:12 Asia/Shanghai). Branch
fix/always-allow-approvalon Birfy/FlyBot. Plan: FlyBot-side standing grants (per Bot / per group) checked in theapproval/requestwaterfall; no DSH patch (DSH has no persistent outcome).Let a standing approval answer only the owner's own turns (ThinkFlowL…
Add Always allow for a Bot or a group to tool approval cards (ThinkFl…