All vulnerabilities
CVE-2026-56838GHSA-v847-hxxw-3pxgPYSEC-2026-3520

PraisonAI recipe.run_stream skips dangerous-tool policy enforcement

MervinPraison PraisonAIPyPILibraries & packages
CVSS
7.8High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)No scoreNo FIRST EPSS score in this snapshot yet
Fixed in4.6.59Fixed versionOSV
Published23 Oct 2026Updated 23 Oct 2026CVE List

What fixes it

  • 4.6.59praisonai, PyPIOSVpip install "praisonai>=4.6.59"

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

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.

Text from CVE List

Affected versions 53

  • PraisonAIaffected: >= 4.5.87, < 4.6.59CVE List
  • praisonai, pip>= 4.5.87, <= 4.6.57GitHub
  • praisonai, PyPIfrom 4.5.87, fixed in 4.6.59OSV
  • praisonai, PyPI4.5.100OSV
  • praisonai, PyPI4.5.101OSV
  • praisonai, PyPI4.5.102OSV
  • praisonai, PyPI4.5.103OSV
  • praisonai, PyPI4.5.104OSV
  • praisonai, PyPI4.5.105OSV
  • praisonai, PyPI4.5.106OSV
  • praisonai, PyPI4.5.107OSV
  • praisonai, PyPI4.5.108OSV
  • praisonai, PyPI4.5.109OSV
  • praisonai, PyPI4.5.110OSV
  • praisonai, PyPI4.5.111OSV
  • praisonai, PyPI4.5.112OSV
  • praisonai, PyPI4.5.113OSV
  • praisonai, PyPI4.5.114OSV
  • praisonai, PyPI4.5.115OSV
  • praisonai, PyPI4.5.117OSV
  • praisonai, PyPI4.5.118OSV
  • praisonai, PyPI4.5.119OSV
  • praisonai, PyPI4.5.120OSV
  • praisonai, PyPI4.5.121OSV
  • praisonai, PyPI4.5.122OSV
  • praisonai, PyPI4.5.123OSV
  • praisonai, PyPI4.5.124OSV
  • praisonai, PyPI4.5.125OSV
  • praisonai, PyPI4.5.126OSV
  • praisonai, PyPI4.5.127OSV
  • praisonai, PyPI4.5.128OSV
  • praisonai, PyPI4.5.129OSV
  • praisonai, PyPI4.5.130OSV
  • praisonai, PyPI4.5.131OSV
  • praisonai, PyPI4.5.132OSV
  • praisonai, PyPI4.5.133OSV
  • praisonai, PyPI4.5.134OSV
  • praisonai, PyPI4.5.135OSV
  • praisonai, PyPI4.5.136OSV
  • praisonai, PyPI4.5.137OSV
  • praisonai, PyPI4.5.139OSV
  • praisonai, PyPI4.5.140OSV
  • praisonai, PyPI4.5.143OSV
  • praisonai, PyPI4.5.144OSV
  • praisonai, PyPI4.5.145OSV
  • praisonai, PyPI4.5.149OSV
  • praisonai, PyPI4.5.87OSV
  • praisonai, PyPI4.5.88OSV
  • praisonai, PyPI4.5.89OSV
  • praisonai, PyPI4.5.90OSV
  • praisonai, PyPI4.5.93OSV
  • praisonai, PyPI4.5.94OSV
  • praisonai, PyPI4.5.95OSV

References 1