PraisonAI's Dynamic Context module provides filesystem-backed history and terminal-log storage. The SDK reference describes the module as providing:
The module also exports agent-callable tool factories:
create_history_tools() returns history_search, history_tail, and
history_get.create_terminal_tools() returns terminal_tail, terminal_grep, and
terminal_commands.Those tools accept run_id and agent_id arguments from the tool caller. The
underlying stores join those values into filesystem paths without rejecting
absolute paths or .. traversal:
history_dir = self.base_dir / run_id / "history"
return history_dir / f"{agent_id}.jsonl"
terminal_dir = self.base_dir / run_id / "terminal"
return terminal_dir / f"{agent_id}.log"
Because run_id can be an absolute path and agent_id can contain traversal,
a lower-trust prompt/user that can call these tools can read .jsonl and
.log files outside the configured Dynamic Context base directory.
MervinPraison/PraisonAIpippraisonaisrc/praisonai/praisonai/context/history_store.pysrc/praisonai/praisonai/context/terminal_logger.py4.6.58origin/main validated:
1ad58ca02975ff1398efeda694ea2ab78f20cf3eorigin/main tag validated: v4.6.58Suggested affected range:
pip:praisonai >= 3.8.1, <= 4.6.58
Representative local sweep:
3.8.1: vulnerable4.0.0: vulnerable4.5.113: vulnerable4.6.33: vulnerable4.6.34: vulnerable4.6.40: vulnerable4.6.50:...3.10.03.10.13.10.103.10.113.10.123.10.133.10.143.10.153.10.163.10.17+290 more4.6.59Exploitability
AV:NAC:LPR:NUI:NScope
S:UImpact
C:HI:NA:NCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N