CVE-2026-57118
PraisonAI AgentTeam.launch exposes unauthenticated remote agent listing and invocation endpoints
PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, AgentTeam.launch and the Agents alias register GET /{path}/list, POST /{path}, and `POST /{path}/{agent_id}' without access-control checks before listing agents or calling agent.chat. A remotely exposed server can therefore let unauthenticated clients enumerate agents, consume model resources, access connected private context, and trigger agent tools or workflow side effects. This vulnerability is fixed in praisonaiagents 1.6.59.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.8
PraisonAI AgentTeam.launch exposes unauthenticated remote agent listing and invocation endpoints
PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, AgentTeam.launch and the Agents alias register GET /{path}/list, POST /{path}, and `POST /{path}/{agent_id}' without access-control checks before listing agents or calling agent.chat. A remotely exposed server can therefore let unauthenticated clients enumerate agents, consume model resources, access connected private context, and trigger agent tools or workflow side effects. This vulnerability is fixed in praisonaiagents 1.6.59.
- Record
CVE-2026-57118- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306, CWE-862
- Updated
- 2026-11-02
EUVDEUVD-2026-97774
9.8
PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, AgentTeam.launch and the Agents alias register GET /{path}/list, POST /{path}, and `POST /{path}/{agent_id}' without access-control checks before listing agents or calling agent.chat. A remotely exposed server can therefore let unauthenticated clients enumerate agents, consume model resources, access connected private context, and trigger agent tools or workflow side effects. This vulnerability is fixed in praisonaiagents 1.6.59.
- Record
EUVD-2026-97774- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-x8cv-xmq7-p8xp
9.8
PraisonAI AgentTeam.launch exposes unauthenticated remote agent listing and invocation endpoints
PraisonAI AgentTeam.launch() exposes unauthenticated remote agent invocation endpoints
Summary
PraisonAI's documented Python AgentTeam.launch() / Agents.launch() HTTP server starts externally reachable agent invocation endpoints without any authentication enforcement.
The current implementation registers GET /{path}/list, POST /{path}, and POST /{path}/{agent_id} routes. The POST routes directly call agent.chat(...). Requests with no Authorization header are accepted, and requests with an obviously wrong bearer token are also accepted. The default Python API bind host for Agents.launch() is 0.0.0.0, and official documentation shows host="0.0.0.0" for remote access.
This is a sibling/incomplete-fix variant of PraisonAI's prior unauthenticated API server and call server advisory family. Nearby server surfaces were hardened to require tokens, fail closed, or bind locally by default, but the AgentTeam.launch() FastAPI path still exposes unauthenticated agent execution on current upstream main and the latest release.
This report is scoped to the Python AgentTeam.launch() / Agents.launch() route-registration path. It does not require adjudicating whether the separate praisonai serve agents --api-key CLI path is correctly enforced.
Affected Components
- Package:
praisonaiagents - Current upstream main tested:
2f9677abb2ea68eab864ee8b6a828fd0141612e1 - Latest release tag tested:
v4.6.57 - Primary file:
src/praisonai-agents/praisonaiagents/agents/agents.py - Current line references:
AgentTeam.launch()begins at line 1923; the groupPOSTroute is registered at line 2007; the group handler invokesagent_instance.chat(...)at line 2042; the unauthenticated list route is registered at line 2086; per-agent handlers invokeagent.chat(...)at line 2117. - Primary class/API:
AgentTeam.launch()/ exported aliasAgents - Affected routes:
GET /{path}/list: lists deployed agents.POST /{path}: sequentially invokes all agents in the team.POST /{path}/{agent_id}: invokes a specific agent.
Current vulnerable sink:
@app.post(path)
async def handle_query(request: Request, query_data: Optional[AgentQuery] = None):
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda ci=current_input: agent_instance.chat(ci)),
)
Per-agent sink:
app.post(agent_path)(create_agent_handler(agent_instance))
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda q=query: agent.chat(q)),
)
List endpoint:
@app.get(f"{path}/list")
async def list_agents():
return {"agents": [{"name": agent.display_name, "id": ...} for agent in self.agents]}
There is no middleware, dependency, token comparison, bearer-token parsing, API-key check, or startup fail-closed guard in this launch path.
Security Boundary
This is not a trust-model-only report. PraisonAI's own current security documentation says API servers were hardened so that anonymous requests return 401 and API servers bind to 127.0.0.1 by default after the prior unauthenticated API advisory family.
The codebase also contains hardened sibling implementations:
praisonai.deploy.apinow hasAUTH_ENABLED,PRAISONAI_API_TOKEN, generated tokens, and401 Unauthorizedchecks (src/praisonai/praisonai/deploy/api.pylines 44-62 and 69-97).praisonai.gateway.server.WebSocketGatewayvalidates external bind safety, requires a token for external binds, checks bearer/query/cookie auth, and validates WebSocket auth (src/praisonai/praisonai/gateway/server.pylines 328-424).praisonai callhardening is documented as requiringCALL_SERVER_TOKENor explicit opt-out.
AgentTeam.launch() remains outside those shared controls even though it exposes the same class of network-facing agent invocation surface.
Local-Only Reproduction
Run the local-only PoV script below with current source…
- Record
GHSA-x8cv-xmq7-p8xp- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306, CWE-862
- Updated
- 2026-11-02
NVD
9.8
PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, AgentTeam.launch and the Agents alias register GET /{path}/list, POST /{path}, and `POST /{path}/{agent_id}' without access-control checks before listing agents or calling agent.chat. A remotely exposed server can therefore let unauthenticated clients enumerate agents, consume model resources, access connected private context, and trigger agent tools or workflow side effects. This vulnerability is fixed in praisonaiagents 1.6.59.
- Record
CVE-2026-57118- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306, CWE-862
- Updated
- 2026-11-02
OSV
9.8
PraisonAI AgentTeam.launch exposes unauthenticated remote agent listing and invocation endpoints
PraisonAI is a multi-agent teams system. Prior to praisonaiagents 1.6.59, AgentTeam.launch and the Agents alias register GET /{path}/list, POST /{path}, and `POST /{path}/{agent_id}' without access-control checks before listing agents or calling agent.chat. A remotely exposed server can therefore let unauthenticated clients enumerate agents, consume model resources, access connected private context, and trigger agent tools or workflow side effects. This vulnerability is fixed in praisonaiagents 1.6.59.
- Record
CVE-2026-57118- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306, CWE-862
- Updated
- 2026-11-02
OSVGHSA-x8cv-xmq7-p8xp
9.8
PraisonAI AgentTeam.launch exposes unauthenticated remote agent listing and invocation endpoints
PraisonAI AgentTeam.launch() exposes unauthenticated remote agent invocation endpoints
Summary
PraisonAI's documented Python AgentTeam.launch() / Agents.launch() HTTP server starts externally reachable agent invocation endpoints without any authentication enforcement.
The current implementation registers GET /{path}/list, POST /{path}, and POST /{path}/{agent_id} routes. The POST routes directly call agent.chat(...). Requests with no Authorization header are accepted, and requests with an obviously wrong bearer token are also accepted. The default Python API bind host for Agents.launch() is 0.0.0.0, and official documentation shows host="0.0.0.0" for remote access.
This is a sibling/incomplete-fix variant of PraisonAI's prior unauthenticated API server and call server advisory family. Nearby server surfaces were hardened to require tokens, fail closed, or bind locally by default, but the AgentTeam.launch() FastAPI path still exposes unauthenticated agent execution on current upstream main and the latest release.
This report is scoped to the Python AgentTeam.launch() / Agents.launch() route-registration path. It does not require adjudicating whether the separate praisonai serve agents --api-key CLI path is correctly enforced.
Affected Components
- Package:
praisonaiagents - Current upstream main tested:
2f9677abb2ea68eab864ee8b6a828fd0141612e1 - Latest release tag tested:
v4.6.57 - Primary file:
src/praisonai-agents/praisonaiagents/agents/agents.py - Current line references:
AgentTeam.launch()begins at line 1923; the groupPOSTroute is registered at line 2007; the group handler invokesagent_instance.chat(...)at line 2042; the unauthenticated list route is registered at line 2086; per-agent handlers invokeagent.chat(...)at line 2117. - Primary class/API:
AgentTeam.launch()/ exported aliasAgents - Affected routes:
GET /{path}/list: lists deployed agents.POST /{path}: sequentially invokes all agents in the team.POST /{path}/{agent_id}: invokes a specific agent.
Current vulnerable sink:
@app.post(path)
async def handle_query(request: Request, query_data: Optional[AgentQuery] = None):
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda ci=current_input: agent_instance.chat(ci)),
)
Per-agent sink:
app.post(agent_path)(create_agent_handler(agent_instance))
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda q=query: agent.chat(q)),
)
List endpoint:
@app.get(f"{path}/list")
async def list_agents():
return {"agents": [{"name": agent.display_name, "id": ...} for agent in self.agents]}
There is no middleware, dependency, token comparison, bearer-token parsing, API-key check, or startup fail-closed guard in this launch path.
Security Boundary
This is not a trust-model-only report. PraisonAI's own current security documentation says API servers were hardened so that anonymous requests return 401 and API servers bind to 127.0.0.1 by default after the prior unauthenticated API advisory family.
The codebase also contains hardened sibling implementations:
praisonai.deploy.apinow hasAUTH_ENABLED,PRAISONAI_API_TOKEN, generated tokens, and401 Unauthorizedchecks (src/praisonai/praisonai/deploy/api.pylines 44-62 and 69-97).praisonai.gateway.server.WebSocketGatewayvalidates external bind safety, requires a token for external binds, checks bearer/query/cookie auth, and validates WebSocket auth (src/praisonai/praisonai/gateway/server.pylines 328-424).praisonai callhardening is documented as requiringCALL_SERVER_TOKENor explicit opt-out.
AgentTeam.launch() remains outside those shared controls even though it exposes the same class of network-facing agent invocation surface.
Local-Only Reproduction
Run the local-only PoV script below with current source…
- Record
GHSA-x8cv-xmq7-p8xp- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306, CWE-862
- Updated
- 2026-11-02
OSVPYSEC-2026-3537
9.8
PraisonAI AgentTeam.launch exposes unauthenticated remote agent listing and invocation endpoints
PraisonAI AgentTeam.launch() exposes unauthenticated remote agent invocation endpoints
Summary
PraisonAI's documented Python AgentTeam.launch() / Agents.launch() HTTP server starts externally reachable agent invocation endpoints without any authentication enforcement.
The current implementation registers GET /{path}/list, POST /{path}, and POST /{path}/{agent_id} routes. The POST routes directly call agent.chat(...). Requests with no Authorization header are accepted, and requests with an obviously wrong bearer token are also accepted. The default Python API bind host for Agents.launch() is 0.0.0.0, and official documentation shows host="0.0.0.0" for remote access.
This is a sibling/incomplete-fix variant of PraisonAI's prior unauthenticated API server and call server advisory family. Nearby server surfaces were hardened to require tokens, fail closed, or bind locally by default, but the AgentTeam.launch() FastAPI path still exposes unauthenticated agent execution on current upstream main and the latest release.
This report is scoped to the Python AgentTeam.launch() / Agents.launch() route-registration path. It does not require adjudicating whether the separate praisonai serve agents --api-key CLI path is correctly enforced.
Affected Components
- Package:
praisonaiagents - Current upstream main tested:
2f9677abb2ea68eab864ee8b6a828fd0141612e1 - Latest release tag tested:
v4.6.57 - Primary file:
src/praisonai-agents/praisonaiagents/agents/agents.py - Current line references:
AgentTeam.launch()begins at line 1923; the groupPOSTroute is registered at line 2007; the group handler invokesagent_instance.chat(...)at line 2042; the unauthenticated list route is registered at line 2086; per-agent handlers invokeagent.chat(...)at line 2117. - Primary class/API:
AgentTeam.launch()/ exported aliasAgents - Affected routes:
GET /{path}/list: lists deployed agents.POST /{path}: sequentially invokes all agents in the team.POST /{path}/{agent_id}: invokes a specific agent.
Current vulnerable sink:
@app.post(path)
async def handle_query(request: Request, query_data: Optional[AgentQuery] = None):
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda ci=current_input: agent_instance.chat(ci)),
)
Per-agent sink:
app.post(agent_path)(create_agent_handler(agent_instance))
...
response = await loop.run_in_executor(
None,
copy_context_to_callable(lambda q=query: agent.chat(q)),
)
List endpoint:
@app.get(f"{path}/list")
async def list_agents():
return {"agents": [{"name": agent.display_name, "id": ...} for agent in self.agents]}
There is no middleware, dependency, token comparison, bearer-token parsing, API-key check, or startup fail-closed guard in this launch path.
Security Boundary
This is not a trust-model-only report. PraisonAI's own current security documentation says API servers were hardened so that anonymous requests return 401 and API servers bind to 127.0.0.1 by default after the prior unauthenticated API advisory family.
The codebase also contains hardened sibling implementations:
praisonai.deploy.apinow hasAUTH_ENABLED,PRAISONAI_API_TOKEN, generated tokens, and401 Unauthorizedchecks (src/praisonai/praisonai/deploy/api.pylines 44-62 and 69-97).praisonai.gateway.server.WebSocketGatewayvalidates external bind safety, requires a token for external binds, checks bearer/query/cookie auth, and validates WebSocket auth (src/praisonai/praisonai/gateway/server.pylines 328-424).praisonai callhardening is documented as requiringCALL_SERVER_TOKENor explicit opt-out.
AgentTeam.launch() remains outside those shared controls even though it exposes the same class of network-facing agent invocation surface.
Local-Only Reproduction
Run the local-only PoV script below with current source…
- Record
PYSEC-2026-3537- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
praisonaiagentsPyPI |
before 1.6.59 | 1.6.59 |
praisonaiagentsPyPI |
before 1.6.59, plus listed versions 0.0.10.0.100.0.1000.0.1010.0.102 Show 45 moreShow less0.0.1030.0.1040.0.1050.0.1060.0.1070.0.1080.0.1090.0.110.0.1100.0.1110.0.1120.0.1130.0.1140.0.1150.0.1160.0.1170.0.1180.0.1190.0.120.0.1200.0.1210.0.1220.0.1230.0.1240.0.1250.0.1260.0.1270.0.1280.0.1290.0.130.0.1300.0.1310.0.1320.0.1330.0.1340.0.1350.0.1360.0.1370.0.1380.0.1390.0.140.0.1400.0.1410.0.1420.0.143 |
1.6.59 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-57118 is a critical vulnerability (CVSS 9.8) in Mervinpraison Praisonai, published June 18, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 35th percentile. Fixed in praisonaiagents 1.6.59.
References
github.com/MervinPraison/PraisonAI/security/advisories/GHSA-x8cv-xmq7-p8xp
github.com/MervinPraison/PraisonAI/commit/b4270173d4123fb1ee8910588f0896668ee21b59
github.com/MervinPraison/PraisonAI/releases/tag/v4.6.59
github.com/advisories/GHSA-x8cv-xmq7-p8xp
github.com/CVEProject/cvelistV5/tree/main/cves/2026/57xxx/CVE-2026-57118.json
nvd.nist.gov/vuln/detail/CVE-2026-57118
github.com/MervinPraison/PraisonAI
pypi.org/project/praisonaiagents
Left out here: 536 versions and the rest of 3 source descriptions. The JSON record has them.