CVE-2026-56838: PraisonAI: recipe run_stream skips dangerous-tool policy
HIGHPraisonAI's streaming recipe path, recipe.run_stream(), skips the dangerous-tool policy check that recipe.run() enforces, so a recipe declaring execute_command runs even though allow_dangerous_tools is False. This is a local, user-interaction-required flaw (CVSS 7.8, CWE-78/693/863) that matters wherever teams load third-party or shared recipes, because a recipe that looks policy-compliant can still execute OS commands. Exploitation likelihood is unknown (no EPSS score), it is not in CISA KEV, and there is no public exploit or Nuclei template. Blast radius is limited today, with only 1 tracked downstream dependent, but the package has 187 other CVEs, which signals a weak security track record. Upgrade PraisonAI to 4.6.59 or later, and until then audit any code that calls run_stream() and treat untrusted recipes as untrusted code.
What is the risk?
Moderate-to-high for organizations that use PraisonAI recipes from outside sources. The CVSS 7.8 rating reflects local attack vector, low complexity, no privileges and required user interaction, with high impact on confidentiality, integrity and availability. No EPSS data, KEV listing, public exploit or scanner template exists, so near-term mass exploitation is unlikely. The flaw is a policy-enforcement bypass: the safeguard exists but is skipped on one code path, so teams that rely on the default-deny control have a false sense of security. Exposure is highest where recipes are shared, downloaded from registries, or run by developers and CI jobs with access to credentials and API keys.
How does the attack unfold?
What systems are affected?
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade PraisonAI (pip) to 4.6.59 or later. 2) Until patched, avoid recipe.run_stream() for any recipe you did not author, or wrap calls with an explicit _check_tool_policy equivalent before execution. 3) Review recipe TEMPLATE.yaml files for dangerous tools such as execute_command and remove them where not needed. 4) Only load recipes from trusted, reviewed sources and pin them by hash or commit. 5) Run agents in sandboxed containers or low-privilege accounts with minimal credentials and restricted egress. 6) Detection: search code and logs for run_stream() usage, and monitor for unexpected child processes spawned by the PraisonAI Python process.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-56838?
PraisonAI's streaming recipe path, recipe.run_stream(), skips the dangerous-tool policy check that recipe.run() enforces, so a recipe declaring execute_command runs even though allow_dangerous_tools is False. This is a local, user-interaction-required flaw (CVSS 7.8, CWE-78/693/863) that matters wherever teams load third-party or shared recipes, because a recipe that looks policy-compliant can still execute OS commands. Exploitation likelihood is unknown (no EPSS score), it is not in CISA KEV, and there is no public exploit or Nuclei template. Blast radius is limited today, with only 1 tracked downstream dependent, but the package has 187 other CVEs, which signals a weak security track record. Upgrade PraisonAI to 4.6.59 or later, and until then audit any code that calls run_stream() and treat untrusted recipes as untrusted code.
Is CVE-2026-56838 actively exploited?
No confirmed active exploitation of CVE-2026-56838 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-56838?
1) Upgrade PraisonAI (pip) to 4.6.59 or later. 2) Until patched, avoid recipe.run_stream() for any recipe you did not author, or wrap calls with an explicit _check_tool_policy equivalent before execution. 3) Review recipe TEMPLATE.yaml files for dangerous tools such as execute_command and remove them where not needed. 4) Only load recipes from trusted, reviewed sources and pin them by hash or commit. 5) Run agents in sandboxed containers or low-privilege accounts with minimal credentials and restricted egress. 6) Detection: search code and logs for run_stream() usage, and monitor for unexpected child processes spawned by the PraisonAI Python process.
What systems are affected by CVE-2026-56838?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, multi-agent orchestration, recipe/workflow execution, developer workstations and CI runners.
What is the CVSS score for CVE-2026-56838?
CVE-2026-56838 has a CVSS v3.1 base score of 7.8 (HIGH). The EPSS exploitation probability is 0.15%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0010.005AI Agent ToolAML.T0011.002Poisoned AI Agent ToolAML.T0050Command and Scripting InterpreterAML.T0053AI Agent Tool InvocationCompliance Controls Affected
What are the technical details?
Original Advisory
PraisonAI is a multi-agent teams system. From version 4.5.87 to before version 4.6.59, PraisonAI recipe execution blocks default-denied dangerous tools unless the caller explicitly passes allow_dangerous_tools=True. The normal recipe.run() path enforces this with _check_tool_policy(). The streaming path, recipe.run_stream(), loads the same recipe, checks dependencies, and then calls _execute_recipe() without running the dangerous-tool policy check. As a result, a recipe that honestly declares execute_command in TEMPLATE.yaml requires.tools is denied by recipe.run(), but reaches the execution engine through recipe.run_stream() with allow_dangerous_tools=False. This issue has been patched in version 4.6.59.
Exploitation Scenario
An adversary publishes or shares a useful-looking PraisonAI recipe that declares execute_command in its TEMPLATE.yaml requires.tools. A developer or automation job loads the recipe through the streaming interface, run_stream(), for a live UI or progress output. Because the dangerous-tool policy check is skipped, the recipe's agent can invoke execute_command without the allow_dangerous_tools=True opt-in that recipe.run() would demand. The attacker's commands run on the host, harvesting environment variables, LLM API keys and cloud credentials, and may establish a reverse shell for further access.
Weaknesses (CWE)
CWE-693Protection Mechanism FailurePrimaryCWE-78Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')PrimaryCWE-863Incorrect AuthorizationPrimaryCWE-693Protection Mechanism FailureCWE-78Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')CWE-863Incorrect AuthorizationCWE-693 — Protection Mechanism Failure: The product does not use or incorrectly uses a protection mechanism that provides sufficient defense against directed attacks against the product.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:HReferences
- github.com/MervinPraison/PraisonAI/security/advisories/GHSA-v847-hxxw-3pxgx_refsource_CONFIRM
Timeline
Related Vulnerabilities
CVE-2026-4816810.0PraisonAI: shell injection in Claude Action enables RCE
Same package: praisonaiCVE-2026-6144710.0PraisonAI: RCE via unsandboxed LLM code execution
Same package: praisonaiCVE-2026-614459.9PraisonAI: AICoder root RCE via unsanitized tool calls
Same package: praisonaiGHSA-vmmj-pfw7-fjwp9.9praisonai: sandbox escape gives RCE via codeMode tool
Same package: praisonaiCVE-2026-473929.9praisonaiagents: RCE via Python sandbox bypass
Same package: praisonai