// threat brief

PraisonAI AgentTeam.launch() missing authentication: anyone who can reach the server can list and call your AI agents

CVSS
9.8 CRITICAL
CISA KEV
Not listed
Weakness
CWE-306 · CWE-862

PlainCVE Team · Published 2026-10-17 · AI-assisted · Press brief ↓

AI review 2026-10-17 (not human-reviewed)Command tests: none yetReproduced: not yetVerification record ↓

PraisonAI's AgentTeam.launch() HTTP server has no authentication, so anyone who can reach it can list and call your AI agents.

Who is affectedAnyone using an affected praisonaiagents version (the CVE record says before 1.6.59 and also lists PraisonAI before 4.6.59; the maintainer's GitHub advisory says praisonaiagents 4.6.57 and earlier, so the two disagree) who starts an HTTP server with AgentTeam.launch() or Agents.launch() that is reachable over the network.
What happensDepending on the deployed agents, an attacker may be able to list agents, call them, use up paid model usage, reach private context connected to the agents, or trigger agent tools and workflow side effects.
What to do nowUpgrade praisonaiagents to 1.6.59 or later and set the PRAISONAI_LAUNCH_AUTH_TOKEN environment variable; per the fix commit, all requests are still allowed if it is not set. Until you can upgrade, Vulert suggests temporarily binding the server to 127.0.0.1 so it is not reachable from outside.
Affected versionsCVE record — praisonaiagents before 1.6.59 and PraisonAI before 4.6.59; maintainer's GitHub advisory — praisonaiagents 4.6.57 and earlier (the two disagree)
Fixed versionspraisonaiagents 1.6.59 or later, with PRAISONAI_LAUNCH_AUTH_TOKEN set to enable authentication (PraisonAI 4.6.59 is probably the matching fixed release; this is our analysis)
CVSS vector
Show full vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Timeline
  • First public 2026-06-17

Blue team playbook

Check, fix / mitigate, respond, harden. Matching the affected versions does not mean you were compromised, and a check that finds nothing does not prove you are safe; each item says what it can and cannot show. Tagged steps point to where the attack flow below can be stopped.

DETECTCheckAm I affected? Any signs of compromise?
  1. 01Check your version

    Read-only; it does not change your environment. Run it on the host that runs the agent server, inside the same Python environment where PraisonAI is installed (activate the virtualenv first); otherwise you may be checking a different environment. praisonaiagents below 1.6.59 is in the CVE record's affected range (the CVE record also lists PraisonAI below 4.6.59; the maintainer's GitHub advisory says praisonaiagents 4.6.57 and earlier, which covers every 1.x version).

    Read-only check
    pip show praisonaiagents praisonai | grep -iE '^(name|version)'
  2. 02Find code that starts a server with launch()

    Read-only; it does not change any files. Run it from your own project's source root; it searches all subfolders. The command only lists .launch( calls and cannot tell you the bind address, so check each hit for a host argument and its value. You are exposed only if you start an HTTP server with AgentTeam.launch() or Agents.launch() and it is reachable over the network. Note that Agents.launch() binds to 0.0.0.0 by default, so leaving out host may still expose it.

    Read-only check
    grep -rnE '\.launch\(' --include='*.py' .
  3. 03Review access logs for unexpected calls

    PlainCVE's suggestion (the sources we reviewed contain no detection guidance): check logs on the agent server or any reverse proxy in front of it for requests to the agent-listing or agent-call paths from unfamiliar sources, and compare against unusual spikes in model provider usage.

MITIGATEFix / mitigatePatch; block it if you cannot patch yet
  1. 01Upgrade to praisonaiagents 1.6.59 or later and set PRAISONAI_LAUNCH_AUTH_TOKEN

    Changes your environment (installs or upgrades a package). Run it on the host that runs the agent server, inside the same Python environment where PraisonAI is installed (activate the virtualenv first). Per fix commit b4270173, the new version reads the PRAISONAI_LAUNCH_AUTH_TOKEN environment variable; if it is not set, the check allows every request, so upgrading without setting it leaves the endpoints unauthenticated. Once set, requests must carry the token as a Bearer token in the Authorization header or in an X-Auth-Token header, or they get a 401. The fix does not change launch()'s default bind address.

    Changes your environment
    pip install -U "praisonaiagents>=1.6.59"
  2. 02Can't upgrade yet: bind to 127.0.0.1

    A temporary workaround from Vulert that keeps the server unreachable from outside; Vulert says it is not a full fix.

RESPONDRespondIf you find signs of compromise
  1. 01Rotate credentials of services the agents use

    PlainCVE's suggestion: if you find suspicious calls, rotate the credentials the agents' tools use and your model provider keys, and check whether the tools performed unexpected actions. This is a precaution, not a confirmation of a leak.

HARDENHardenPrevent the next one
  1. 01Don't expose agent servers directly to the internet

    PlainCVE's suggestion (the sources we reviewed contain no such guidance): even after upgrading, restrict who can reach it behind a firewall or reverse proxy.

  2. 02Give agents only necessary tools and least privilege

    PlainCVE's suggestion (the sources we reviewed contain no such guidance): the real impact of this flaw depends on what the agents can do; the less they can do, the less damage misuse causes.

Full remediation steps and notes
  1. Upgrade. pip install -U "praisonaiagents>=1.6.59" (changes your environment; run it on the host that runs the agent server, in the same Python environment where PraisonAI is installed). If you install the praisonai package, the CVE record lists versions before 4.6.59 as affected, and our analysis is that 4.6.59 is the matching release. After upgrading, run pip show praisonaiagents to confirm you actually have 1.6.59 or later.
  2. You must set a key after upgrading. Per fix commit b4270173, authentication for launch() is only enabled when the PRAISONAI_LAUNCH_AUTH_TOKEN environment variable is set; without it every request is allowed, so upgrading alone leaves the endpoints unauthenticated. PlainCVE’s suggestion: set a long, random value in the environment that starts the server, and have legitimate callers send it in the Authorization: Bearer or X-Auth-Token header.
  3. The workaround is only temporary. Binding to 127.0.0.1, as Vulert suggests, blocks outside connections, but other programs on the same machine can still connect. Vulert itself says it is not a full fix.
  4. Check for misuse. The sources we reviewed contain no detection guidance. PlainCVE suggests comparing server logs with your model provider’s usage, and rotating the credentials the agents’ tools use if you see suspicious calls.

Attack flow

Read left to right: this is the order the attack happens in. A blue shield means the step can be stopped; the earlier, the better. Click an icon for details.

Read top to bottom: this is the order the attack happens in. A blue shield means the step can be stopped; the earlier, the better. Tap an icon for details.

PraisonAI AgentTeam.launch() missing authentication: anyone who can reach the server can list and call your AI agents: 1. Finds a PraisonAI agent server reachable over the network → 2. Calls the agent-listing endpoint with no credentials → 3. The server returns the agent list without any access check → 4. The attacker calls an agent, and the server runs agent.chat() directly → 5. Agent tools or workflows are triggeredCVE-2026-57118 · PraisonAI AgentTeam.launch() missing authentication: anyone who can reach the server canlist and call your AI agentsAttackerYour systemExternalFinds a PraisonAI agent server reachable over the network — Agents.launch() binds to 0.0.0.0 (all network interfaces) by default, and the official docs show the same for remote access, so servers are more likely to be exposed to the network. 1Finds a PraisonAIagent serverreachable over thenetworkCalls the agent-listing endpoint with no credentials — Requests with no Authorization header are accepted, and so are requests carrying an obviously wrong token. 2Calls theagent-listingendpoint with nocredentialsThe server returns the agent list without any access check — Older versions registered these routes without any authentication or authorization check. 3The server returnsthe agent listwithout any accesscheckThe attacker calls an agent, and the server runs agent.chat() directly — Each call may use up your paid model usage and may let the agent reveal private context it can access. 4The attacker callsan agent, and theserver runsagent.chat(…Agent tools or workflows are triggered — What happens depends on which tools the agents have been given. 5Agent tools orworkflows aretriggeredAttack pathCan be stopped herePlainCVE · plaincve.date/en/vulns/cve-2026-57118-praisonai-agent-launch-missing-auth · CC BY 4.0
PraisonAI AgentTeam.launch() missing authentication: anyone who can reach the server can list and call your AI agents: 1. Finds a PraisonAI agent server reachable over the network → 2. Calls the agent-listing endpoint with no credentials → 3. The server returns the agent list without any access check → 4. The attacker calls an agent, and the server runs agent.chat() directly → 5. Agent tools or workflows are triggeredCVE-2026-57118 · PraisonAIAgentTeam.launch() missingauthentication: anyone who can reach theserver can list and call your AI agentsFinds a PraisonAI agent server reachable over the network — Agents.launch() binds to 0.0.0.0 (all network interfaces) by default, and the official docs show the same for remote access, so servers are more likely to be exposed to the network. 1AttackerFinds a PraisonAI agentserver reachable overthe networkCalls the agent-listing endpoint with no credentials — Requests with no Authorization header are accepted, and so are requests carrying an obviously wrong token. 2AttackerCalls the agent-listingendpoint with nocredentialsThe server returns the agent list without any access check — Older versions registered these routes without any authentication or authorization check. 3Your systemThe server returns theagent list without anyaccess checkThe attacker calls an agent, and the server runs agent.chat() directly — Each call may use up your paid model usage and may let the agent reveal private context it can access. 4Your systemThe attacker calls anagent, and the serverruns agent.chat()directlyAgent tools or workflows are triggered — What happens depends on which tools the agents have been given. 5ExternalAgent tools or workflowsare triggeredAttack pathCan be stopped herePlainCVE · CC BY 4.0plaincve.date/en/vulns/cve-2026-57118-praisonai-agent-launch-missing-auth
Free to use in reporting and teaching under CC BY 4.0. Attribution is already on the image.
  1. Attacker

    Finds a PraisonAI agent server reachable over the network

    Agents.launch() binds to 0.0.0.0 (all network interfaces) by default, and the official docs show the same for remote access, so servers are more likely to be exposed to the network.

    Defense: Vulert's temporary workaround: bind the server to 127.0.0.1 so it can't be reached from outside.

  2. Attacker

    Calls the agent-listing endpoint with no credentials

    Requests with no Authorization header are accepted, and so are requests carrying an obviously wrong token.

    Defense: Upgrade praisonaiagents to 1.6.59 or later and set PRAISONAI_LAUNCH_AUTH_TOKEN.

  3. Your system

    The server returns the agent list without any access check

    Older versions registered these routes without any authentication or authorization check.

    Defense: The fix commit adds a token check to these routes, but it only takes effect when PRAISONAI_LAUNCH_AUTH_TOKEN is set.

  4. Your system

    The attacker calls an agent, and the server runs agent.chat() directly

    Each call may use up your paid model usage and may let the agent reveal private context it can access.

    Defense: Upgrade and set PRAISONAI_LAUNCH_AUTH_TOKEN; also, PlainCVE's suggestion: set usage limits at your model provider.

  5. External

    Agent tools or workflows are triggered

    What happens depends on which tools the agents have been given.

    Defense: PlainCVE's suggestion: give agents only the tools they need, with least-privilege credentials.

Who is affected

ConditionAffected?
praisonaiagents before 1.6.59 (CVE record) / 4.6.57 and earlier (maintainer’s GitHub advisory) + an HTTP server started with AgentTeam.launch() / Agents.launch() + the server is reachable over the networkAffected
PraisonAI before 4.6.59Listed as affected in the CVE record
praisonaiagents 1.6.59 or later, with PRAISONAI_LAUNCH_AUTH_TOKEN setFixed (both advisories list 1.6.59 or later as fixed; per the fix commit, the variable must be set for authentication to be checked)
praisonaiagents 1.6.59 or later, without PRAISONAI_LAUNCH_AUTH_TOKEN setPer the fix commit, the check allows every request, so the endpoints are still unauthenticated
PraisonAI 4.6.59Probably the matching fixed release (our analysis: the CVE record says versions before 4.6.59 are affected and links to the v4.6.59 release, but no source states the fix outright and the release page has no notes)
Starting agents only via the praisonai serve agents --api-key CLIThe maintainer’s advisory explicitly does not judge this path; we can’t say

Sources disagree on the affected range: The CVE record (CNA: GitHub) says praisonaiagents before 1.6.59 and PraisonAI before 4.6.59. The maintainer’s own GitHub security advisory (that page contains attack code, so we don’t link to it) says praisonaiagents 4.6.57 and earlier are affected and 1.6.59 or later is fixed. praisonaiagents uses 1.x version numbers, so in PlainCVE’s view the advisory’s upper bound looks like a PraisonAI version number entered for praisonaiagents by mistake; the GitLab advisory database says before 1.6.59. Both advisories list praisonaiagents 1.6.59 or later as fixed.

The reporter tested release v4.6.57 and the main-branch commit 2f9677ab at the time. An attacker needs to reach the server over the network, and Agents.launch() binds to 0.0.0.0 (all network interfaces) by default; the official docs show the same for remote access. In PlainCVE’s view, this makes accidental exposure more likely.

How it works

PraisonAI can wrap a team of AI agents (programs driven by a language model that call tools to finish tasks) as an HTTP service. AgentTeam.launch() and its alias Agents.launch() register three kinds of endpoints (URL paths on the server that can be called): one lists the agents, two call them. The problem is that these routes never check who is calling before listing agents or running agent.chat(). The maintainer’s advisory says requests with no Authorization header (the field that carries login credentials) are accepted, and so are requests with an obviously wrong token (an access credential).

This maps to CWE-306 (missing authentication for critical function) and CWE-862 (missing authorization). The maintainer’s advisory also describes it as a sibling of earlier PraisonAI advisories about unauthenticated API servers, a variant the earlier fixes did not cover.

According to the CVE record, anyone who can reach the server may be able to list agents, use up model resources (such as paid model usage), reach private context connected to the agents, and trigger agent tools or workflow side effects. Which of these is possible depends on the agents deployed.

The flawed approach (conceptual illustration, not the original source code):

Show code example(python)
@app.post("/{path}/{agent_id}")
def call_agent(agent_id, body):
    # No identity check at all; run the agent directly
    return agents[agent_id].chat(body.message)

The fixed approach:

Show code example(python)
@app.post("/{path}/{agent_id}")
def call_agent(agent_id, body, request):
    if not is_authorised(request):   # reject without a valid key
        raise Unauthorized()
    return agents[agent_id].chat(body.message)

The fix commit b4270173 is titled as adding API key authentication middleware. Its diff shows that praisonaiagents/agents/agents.py gains an _authorise_launch_request check: the token comes from the PRAISONAI_LAUNCH_AUTH_TOKEN environment variable and is compared against the Authorization: Bearer or X-Auth-Token header, with a 401 on mismatch. Note that if the environment variable is not set, the check allows every request, and the fix does not change launch()’s default bind address.

Timeline

DateEvent
2026-06-17PraisonAI v4.6.59 released (the release page shows no year; 2026 is inferred from the fix commit’s date)
2026-06-17Maintainer publishes GitHub security advisory GHSA-x8cv-xmq7-p8xp (per the GitHub API’s published_at; the advisory page contains attack code, so we don’t link to it)
2026-06-18Reviewed and added to the GitHub Advisory Database (the date OSV records)
2026-06-24CVE ID reserved
2026-07-23Python advisory database publishes PYSEC-2026-3537
2026-10-12CVE record published
2026-10-13Still not in CISA’s Known Exploited Vulnerabilities catalog

Further reading

  • Scoring: 9.8 is the CVSS 3.1 score from the CNA (GitHub). NVD has not done its own analysis yet (status: Awaiting Analysis, as checked on 2026-10-17), so GitHub’s is the only score.
  • Disclosure date: The maintainer’s GitHub security advisory was published on 2026-06-17 (published_at in the GitHub API; that page contains attack code, so we don’t link to it), before the CVE record on 2026-10-12, so this page uses June 17 as the first public disclosure. The 2026-06-18 date shown by OSV and GitLab is when the GitHub Advisory Database reviewed the entry; the 2026-07-23 date on Vulert’s CVE page is the PYSEC-2026-3537 publication date.
  • Is it “remote code execution”? Miggo labels this CVE “Unauth RCE” (unauthenticated remote code execution). The maintainer’s advisory and the CVE record describe unauthenticated agent invocation and don’t claim arbitrary code execution. Our analysis: whether it leads to code execution depends on the tools the agents have, so treat the label as unconfirmed.
  • Exploitation status: The advisory includes a local-only proof of concept that confirms the endpoints answer without authentication (that page contains attack code, so we don’t link to it). That is a public test, not evidence of attacks. The sources show no evidence of exploitation in the wild or before a patch existed. FIRST’s EPSS (a score predicting the chance of exploitation) is 0.33% (about the 24th percentile, as of 2026-10-16).
  • Credit: The maintainer’s GitHub security advisory credits rexpository as the reporter. The CVE record’s discovery field is UNKNOWN; that field describes how the issue was found, not who is credited.
  • Other ID: PYSEC-2026-3537.

Verification Checked item by item against sources by AI under our review rules, all passed; not human-reviewed and not yet reproduced in our lab

AI review2026-10-17 · review rules

Verification records describe the environment and the result only, never reproduction steps or code that could attack other people’s systems. See our policy.

Sources

  1. CVE / NVD / OSVCVE-2026-57118 Record (CVE API) · CVE Program, 2026-10-12 · accessed 2026-10-13
  2. CVE / NVD / OSVNVD API - CVE-2026-57118 · NIST · accessed 2026-10-13
  3. Patch / releasefeat(auth): implement API key authentication middleware for AgentOS (b4270173) · MervinPraison (GitHub), 2026-06-17 · accessed 2026-10-13
  4. Patch / releasePraisonAI v4.6.59 release · MervinPraison (GitHub), 2026-06-17 · accessed 2026-10-13
  5. AdvisoryGitLab Advisory Database - praisonaiagents GHSA-x8cv-xmq7-p8xp · GitLab · accessed 2026-10-13
  6. ResearchCVE-2026-57118: PraisonAI AgentTeam Unauth RCE · Miggo · accessed 2026-10-13
  7. OtherCVE-2026-57118 · Vulert · accessed 2026-10-13

Press brief

In one sentence

PraisonAI is an open-source framework for building teams of AI agents that work together. The HTTP server it starts with AgentTeam.launch() had no authentication at all, so anyone who could reach it could list and call the deployed agents. The CVE numbering authority (GitHub) scores it CVSS 9.8, and the fixed version, praisonaiagents 1.6.59, is available, but per the fix commit, authentication is only enabled after setting PRAISONAI_LAUNCH_AUTH_TOKEN. As of October 13, 2026, it is not on CISA's Known Exploited Vulnerabilities catalog.

Key facts

Severity
CVSS 3.1 9.8 (CNA: GitHub; NVD not yet analysed) cveawg.mitre.org
Fixed version
praisonaiagents 1.6.59 cveawg.mitre.org
GitHub advisory
GHSA-x8cv-xmq7-p8xp cveawg.mitre.org
CVE published
2026-10-12 cveawg.mitre.org

Confirmed

  • Before praisonaiagents 1.6.59, the agent-listing and agent-call endpoints registered by AgentTeam.launch() and Agents.launch() had no access checks.
  • The maintainer's advisory says requests with no Authorization header or a wrong token are accepted, and Agents.launch() binds to 0.0.0.0 by default.
  • As of 2026-10-13, it is not in CISA's Known Exploited Vulnerabilities catalog.

Unconfirmed / disputed

  • Sources disagree on the affected range: the CVE record says praisonaiagents before 1.6.59, while the maintainer's GitHub advisory says 4.6.57 and earlier (fixed in 1.6.59 or later). In PlainCVE's view, the advisory's upper bound looks like a PraisonAI version number entered for praisonaiagents by mistake.
  • Miggo labels it 'unauthenticated RCE', but neither the maintainer's advisory nor the CVE record says so; code execution depends on the agents' tools.
  • The sources show no evidence of exploitation in the wild, and nothing shows it was exploited before a patch existed.
  • No source states outright that PraisonAI 4.6.59 is the matching fix; that is our analysis.

Quotable line

Putting AI agents on the network without a door means letting strangers work on your bill, with your data and your tools.

Images

Download the share image (PNG) · Attack flow diagram (downloadable)

Please credit "PlainCVE" and link to this page. Full citation format is under "How to cite" below. Found a factual error? Report it.

How to cite this page

This article is CC BY 4.0. Please keep the attribution and link when republishing.

PlainCVE Team (2026). "PraisonAI AgentTeam.launch() missing authentication: anyone who can reach the server can list and call your AI agents". PlainCVE. https://plaincve.date/en/vulns/cve-2026-57118-praisonai-agent-launch-missing-auth (accessed YYYY-MM-DD)
BibTeX
@misc{cve202657118praisonaiagentlaunchmissingauth2026,
  title  = {PraisonAI AgentTeam.launch() missing authentication: anyone who can reach the server can list and call your AI agents},
  author = {PlainCVE Team},
  year   = {2026},
  howpublished = {PlainCVE},
  url    = {https://plaincve.date/en/vulns/cve-2026-57118-praisonai-agent-launch-missing-auth},
  note   = {Updated 2026-10-17}
}