Repository navigation
Conversation
The private-share check matched a recent allow-once on the exact content digest, so when the Bot reworded its send after approval it opened a fresh request the person had already answered, looping until someone denied it. The match is now the share itself: same Bot, audience, conversation, within thirty minutes. Co-authored-by: Saim Shafique <128062316+sx4im@users.noreply.github.com>
|
Thanks for picking up #889. The loop is real, but we can't take this approach, because it would let one approval cover messages the person never saw. Matching on Bot, scope and conversation instead of the action's digest means "Allow once" covers anything sent through that tool in the conversation for 30 minutes. For connector sends without a recipient field we recognise, the scope falls back to the tool itself ( We'd welcome a PR that does what #889 suggests: resume the held call with the content the person approved, rather than letting a reworded retry inherit the approval. |
What this changes
A private share (e.g. a Gmail reply held for approval) asks once, and "allow once" is meant to cover the Bot's next attempt for thirty minutes. The check matched the exact content bytes, so when the Bot reworded its reply after your approval it opened a fresh request you had already answered, looping until someone finally denied it. The approval now covers the share itself: same Bot, same audience, same conversation, thirty minutes. A different audience still asks.
Where it runs
No new state, no listeners, no schedules. The lookup reads the existing approvals ledger; every replica decides the same way off the same rows.
Boundary and audit
Changelog
CHANGELOG.mdunderUnreleased.Proof
bun test server/tests/proactive.test.ts: 13 pass, 0 fail. New tests: "an allow-once covers the bot's reworded retry to the same audience" fails before the fix (retry opened a second request) and passes after; "an allow-once for another audience still asks again" guards the boundary.tsc --noEmitclean on server. DB-backed suites need TEST_DATABASE_URL, not available here; the pure check suite covers this change.Fixes #889