Skip to content

fix(telegram): self-explanatory permission denial — agents treat unexplained denials as bugs and probe workarounds - #1479

Closed
anikinsasha wants to merge 1 commit into
danielmiessler:mainfrom
anikinsasha:fix/instructive-permission-denial
Closed

fix(telegram): self-explanatory permission denial — agents treat unexplained denials as bugs and probe workarounds#1479
anikinsasha wants to merge 1 commit into
danielmiessler:mainfrom
anikinsasha:fix/instructive-permission-denial

Conversation

@anikinsasha

Copy link
Copy Markdown

A field report turned one-liner. When a tool call gets denied without explanation, an agent reads the denial as breakage and starts probing workarounds — alternate tools, sed bypasses, retry loops. We watched a Telegram-side session do exactly this for 15 minutes against a working permission boundary before parking the task (incident documented in my #1143 comment thread).

A denial that explains itself converts the boundary from an obstacle the agent fights into an instruction it follows. This enriches the canUseTool deny message so the model is told, at the moment of failure: this is policy, working as intended — don't route around it, surface it to the principal.

No behavior change — nothing newly allowed or denied, message text only.

(Housekeeping note: I'm the author of #1457/#1458/#1459 — GitHub handle renamed anikin-xyzanikinsasha, same account.)

@danielmiessler

Copy link
Copy Markdown
Owner

Thanks @anikinsasha — good field report, and the reasoning is right: an unexplained denial reads to an agent as breakage, and it burns time probing workarounds against a boundary that's working as intended.

Ported into source. The public repo is generated from a private tree at release, so I applied your one-line change directly to the source telegram.ts — the canUseTool /notify deny message now leads with "Denied by policy — working as intended, not a bug" and explicitly tells the model not to route around it and to surface the block to the principal instead. Message text only, no behavior change, exactly as you scoped it.

(Skipped the PR_REVIEW_PACKAGE.md that rode along — looks like PR meta rather than product.)

Closing since it's in the source now; ships next release. Credited in the commit. And noted the handle rename — same account, thanks for the continued fixes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants