All vulnerabilities
CVE-2026-57142GHSA-7qw2-w5rc-37x2PYSEC-2026-3505

PraisonAI recipe workflow policy can be bypassed by declaring and YAML-approving dangerous tools outside TEMPLATE.yaml

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.61Fixed versionOSV
Published23 Oct 2026Updated 23 Oct 2026CVE List

What fixes it

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

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.61, PraisonAI recipe execution has a dangerous-tool policy that is supposed to block default-denied tools unless the caller explicitly passes allow_dangerous_tools=True. That policy only checks tools declared in TEMPLATE.yaml requires.tools. For steps-based recipes, the actual execution path loads workflow.yaml with YAMLWorkflowParser. That parser resolves agent-level tools: declarations and preserves top-level approve:. Workflow.start() then installs those YAML-approved tools into the approval context. As a result, an untrusted recipe can omit execute_command from TEMPLATE.yaml requires.tools, declare it in workflow.yaml agents.*.tools, and add top-level approve: [execute_command]. The caller did not set allow_dangerous_tools=True, but the recipe policy allows the recipe and the workflow approval path self-approves the critical shell tool. This issue has been patched in version 4.6.61.

Text from CVE List

Affected versions 52

  • PraisonAIaffected: >= 4.5.87, < 4.6.61CVE List
  • praisonai, PyPIfrom 4.5.87, fixed in 4.6.61OSV
  • 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