GHSA-3xjw-9qpc-53mh
Arbitrary file read via workspace confinement bypass in local-operator /v1/chat/agents/{id}/edit
The /v1/chat/agents/{agent_id}/edit endpoint in local-operator versions before 0.47.5 resolves the caller-supplied file_path with expanduser().resolve() and reads it without checking that it lies inside the agent's workspace. An unauthenticated client with network access to the API can supply an absolute path or a path containing traversal sequences and obtain the contents of any file readable by the server process, which are placed in the model prompt and returned in the response.
Version 0.47.5 resolves server-side reads within the agent's configured workspace and rejects canonical paths outside it (including symlink and junction escapes) before any model call, adds an optional file_content request field so clients can submit a buffer without host path resolution, and binds lop serve to 127.0.0.1 by default.
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
- None
- Availability
- None
What each source reports
OSV Score usedPYSEC-2026-4010 7.5
Arbitrary file read via workspace confinement bypass in local-operator /v1/chat/agents/{id}/edit
The /v1/chat/agents/{agent_id}/edit endpoint in local-operator versions before 0.47.5 resolves the caller-supplied file_path with expanduser().resolve() and reads it without checking that it lies inside the agent's workspace. An unauthenticated client with network access to the API can supply an absolute path or a path containing traversal sequences and obtain the contents of any file readable by the server process, which are placed in the model prompt and returned in the response.
Version 0.47.5 resolves server-side reads within the agent's configured workspace and rejects canonical paths outside it (including symlink and junction escapes) before any model call, adds an optional file_content request field so clients can submit a buffer without host path resolution, and binds lop serve to 127.0.0.1 by default.
- Record
PYSEC-2026-4010- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N - Weakness
- CWE-22, CWE-200
- Updated
- 2026-11-02
Affected packages
| Package | Affected | Fixed |
|---|---|---|
local-operatorPyPI | before 0.47.5, plus listed versions 0.0.10.0.100.0.110.0.120.0.13 Show 45 moreShow less0.0.140.0.150.0.160.0.170.0.180.0.190.0.20.0.200.0.210.0.220.0.230.0.240.0.250.0.260.0.270.0.280.0.290.0.30.0.40.0.50.0.60.0.70.0.90.1.00.1.10.1.20.1.30.1.3b00.1.40.1.50.1.60.1.70.10.00.11.00.11.10.11.20.11.30.11.40.12.00.12.10.13.00.14.00.14.10.14.20.15.0 | 0.47.5 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
GHSA-3xjw-9qpc-53mh is a high vulnerability (CVSS 7.5) in local-operator, published September 5, 2026. No source lists public exploit code. Fixed in local-operator 0.47.5.
References
Left out here: 600 versions. The JSON record has them.