Answer an AskUserQuestion permission with the answer in the wrong place and the call reports success. Nothing reaches the waiting agent - it is told "The user did not answer the questions." - and the retry then fails with No pending permission request. The responder thinks it worked, the agent thinks the human declined, and neither can see that anything broke. This is getpaseo/paseo#6916.
Why it happens
respondToPermission deletes the request out of pendingPermissions on entry, before the answer payload is validated. Any shape that is not updatedInput.answers keyed by one of the questions resolves as allow, delivers no answer, and leaves the request gone. Both of these do exactly that:
{"behavior": "allow", "selectedActionId": "Viridian"}
{"behavior": "allow", "answers": {"Which colour?": "Viridian"}}
A correct-looking answer one level too shallow is enough to burn it. Both shapes are accepted without complaint at send time, so nothing warns the caller that the question is about to be eaten.
The fix
PR #6936 makes malformed answers return an error while keeping the question pending, so a corrected retry can still land. It has merged and is waiting on a release past v0.11.2.
Until then, send the answers under updatedInput, keyed by the question text or header:
{
"behavior": "allow",
"updatedInput": {
"answers": { "Which colour?": "Viridian" }
}
}
The pattern is worth carrying elsewhere. Anything that deletes a request before it validates the answer turns a malformed payload into an unrecoverable failure, and reporting success on top leaves both sides certain the other one is at fault. Validate first, then consume.