fix(cli): use picoclaw home dir for history file instead of temp dir

Security fix for issue #2234:

- HistoryFile was hardcoded to os.TempDir() (/tmp on Linux)
- /tmp is typically world-readable (mode 1777) exposing command history
- An attacker could create symlinks to overwrite sensitive files
- Now uses internal.GetPicoclawHome() which respects $PICOCLAW_HOME
  environment variable and falls back to ~/.picoclaw
This commit is contained in:
merlinmiao 2026-04-05 10:42:12 +08:00
parent 15a70ac45c
commit 8843ed076d

View file

@ -84,7 +84,7 @@ func interactiveMode(agentLoop *agent.AgentLoop, sessionKey string) {
rl, err := readline.NewEx(&readline.Config{ rl, err := readline.NewEx(&readline.Config{
Prompt: prompt, Prompt: prompt,
HistoryFile: filepath.Join(os.TempDir(), ".picoclaw_history"), HistoryFile: filepath.Join(internal.GetPicoclawHome(), ".picoclaw_history"),
HistoryLimit: 100, HistoryLimit: 100,
InterruptPrompt: "^C", InterruptPrompt: "^C",
EOFPrompt: "exit", EOFPrompt: "exit",