Safeguard
Vulnerability Analysis•

CVE-2026-34937: Command Injection in praisonaiagents

CVE-2026-34937 is a high severity command injection in praisonaiagents run_python. Upgrade to 1.5.90 or later and sandbox any agent that runs code.

Safeguard Security Team
3 min read

CVE-2026-34937 is a high severity OS command injection in praisonaiagents, the PraisonAI multi agent library. NVD scores it 7.8. The run_python helper builds a shell command from code it is given. Upgrade to praisonaiagents 1.5.90 or later. Pin the fixed version and keep untrusted input away from run_python.

What's affected

praisonaiagents before 1.5.90. The fixed release is 1.5.90.

The record says the run_python function in praisonai builds a command string, interpolates user controlled code into it and runs it with shell=True. The vector is local, so it matters most where untrusted text can reach that function, for example through an agent that accepts input from users.

How to check if you're exposed

Check the installed version:

pip show praisonaiagents

Find every environment that has it, including notebooks, containers and CI images:

pip list 2>/dev/null | grep -i praisonai

Then search your code for calls to run_python and ask whether untrusted input can reach it.

What to do now

  1. Upgrade with pip install -U praisonaiagents and confirm the version is 1.5.90 or later.
  2. Pin the fixed version in your requirements or lock file.
  3. Review agents that execute generated or user supplied code, and run them in a container or sandbox with no secrets mounted.
  4. Scan your dependency manifests so the next advisory for an agent framework is matched to the environments that use it.

Why it matters

The weakness is CWE-78, OS command injection. The record explains that the escaping logic only handled backslashes and double quotes. Other shell features such as command substitution were left alone, so a command could run before Python even started.

The lesson is general: escaping strings for a shell is fragile. Passing arguments as a list and avoiding shell=True removes the problem class. Agent frameworks add risk because the input often comes from a model or a user.

The record does not flag this CVE as listed in CISA's Known Exploited Vulnerabilities catalog.

Agent code paths that run generated Python are a natural target, because the whole point of the feature is to execute text. Even with the fix, running such code outside a locked down container is a choice to review. Give the process no cloud credentials, a read only file system where possible, and no route to internal services. Those limits keep a future bug in the same area from becoming a full compromise.

Try it yourself

A check on pull requests keeps a vulnerable pin from landing in the first place. This demo shows one.

Click through it at your own pace, or open it full screen.

Quick check

Is this remotely exploitable?

The vector is local with low privileges. It becomes remote in practice if your app passes outside text to the vulnerable function, so check how it is used.

Does the free scan cover Python packages?

The free in-browser scan at https://gold.safeguard.sh/scan checks dependency manifests for known issues. Try it on your requirements file.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.