KamoCRM

An SI acts on the request its run was woken by without having to cite it, and K3 hears the tool's rights so a colleague who may do it themselves can direct it

FixMCPGatewayService
Shipped
October 14, 2026 at 8:28 PM UTC
Author
Kamo
Commit
60ddac1

Owner 2026-10-14: Luna (crm) asked the owner to approve joining the meeting he had just told her to join. Evidence: run 47cc1908 (NEW_CHAT, woken by his message 12df3196 "You have joined the meeting before you can do it now", 63 s after "Join this meeting: <url>") called meetings_join with no onRequestOf, so the pipeline never weighed his request and asked him (approval 3f6fe9fc, APPROVE_BEFORE); the two runs before it cited 73ef1803 and got ON_REQUEST rows, and 2026-10-12's 4ad68782 was the same omission. No taint (kamo:tool:taint-ext unset for all three runs), so only the missing citation decided it. When a call would go to a person and the SI cited nothing, ToolCallPipeline now weighs the run's wake as if cited (RequestVerifier.inferFromRun): the newest message from a person in each conversation that woke the run (within the 60-minute window, never the SI's or another SI's line), newest first, then each task that woke it, each judged by verify exactly as a cited one (team chat only, a person of the org, addressed to the SI, recent, this run, no outside content read); a candidate failing checks 1-4 is skipped, a read failure is no request. Only on a tool that takes onRequestOf, never for a call whose plan reaches anyone outside the org (outbound recipients or first contacts), and never handed to the planner (no call consent, no disclosure release). A run woken by email, a text, a call or a website chat has no person's message to take, so nothing changes there. ApprovalClient.createOnRequest sends K3 the descriptor's requiredRightsAllOf/AnyOf, requestImplicit and contactsOutsiders (kamoai-service 048a7ec decides REQUESTED_BY_APPROVER or REQUESTED_BY_AUTHORIZED_MEMBER, or refuses NOT_EXPLICIT, now one of REQUEST_REFUSALS); the result's onRequestOf standing adds implicit:true and K3's basis. Tests: **************** (supervisor's wake joins with no approval; a colleague with VIEW_MEETINGS too; one without asks a person; a run with no person's wake asks a person; outside contact never reads the wake; a cited request is weighed as before), RequestVerifierTest (the person's newest DM line, a group mention over a later unaddressed line, email/text/voicemail wakes and SI lines are no request, an externally tainted run is a soft refusal, an assigned task); existing ON_REQUEST tests moved to the eleven-argument call

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing