CVE-2026-56832
DiscordApproval accepts unrelated channel messages as dangerous-tool approvals
Summary
praisonai.bots.DiscordApproval approves a pending dangerous tool call when it
sees any later non-bot message in the configured Discord channel whose text is
classified as approval, such as yes.
The decision is not bound to:
- a Discord reply to the approval message;
- a Discord thread created for that request;
- a Discord interaction/button callback for that request;
- an explicit approver user allowlist; or
- an approval nonce visible only to intended approvers.
As a result, any user who can post in the configured approval channel can
approve a pending high-risk tool call by sending yes after the approval
message appears. The same local PoV also shows that the Slack and Telegram
messaging approval backends have no explicit approver allowlist parameter, but
the primary report-grade issue is the Discord backend's unthreaded channel
cross-talk: the approving message does not need to be a reply or otherwise
request-bound.
Affected Product
- Repository: MervinPraison/PraisonAI
- Ecosystem: pip
- Package: praisonai
- Component: Python messaging approval backends
- Primary affected file: src/praisonai/praisonai/bots/_discord_approval.py
- Related sibling files:
- src/praisonai/praisonai/bots/_slack_approval.py
- src/praisonai/praisonai/bots/_telegram_approval.py
- Latest PyPI version validated: 4.6.58
- Current origin/main validated:
1ad58ca02975ff1398efeda694ea2ab78f20cf3e
- Current origin/main tag validated: v4.6.58
Suggested affected range:
pip:praisonai >= 4.5.2, <= 4.6.58
Representative local sweep:
4.5.0 Discord approval backend not present
4.5.2 vulnerable
4.5.128 vulnerable
4.6.9 vulnerable
4.6.10 vulnerable
4.6.56 vulnerable
4.6.57 vulnerable
4.6.58 vulnerable
Root Cause
DiscordApproval.request_approval() posts an approval message to the configured
channel and records the returned message id.
_poll_for_response() then polls channel history with:
f"/channels/{chan
⚡ Watch CVE-2026-56832
Get an email if CVE-2026-56832 is added to CISA KEV, gains public exploit code, or a new advisory cites it — max one per day, one-click unsubscribe.
Advisory coverage (1)
External references
Embed the live status
— this badge updates automatically when the KEV or exploit status changes. How to embed it →
[](https://www.csirts.com/cve/CVE-2026-56832)