Finding / unreal-agent

2026-10-13-unreal-agent-v0-2-0-moves-sessions-out-of-the-workspace-after-a-61-8-gb-runaway-an-old-session-id-resum

v0.2.0 moves sessions out of the workspace after a 61.8 GB runaway; an old session ID resumed without its old path starts empty. At v0.1.1 the runner kept sessions in .harness/sessions, relative to the process’s current directory, and by default wrote a JSONL log to <workspace>/logs. Issue #3 (2026-09-22) showed the cost: a background grep -R . read its own capture file inside the workspace, the file reached 61.8 GB in about ten minutes, and the runner never exited. The maintainer answered on 2026-09-23 that the log default “wasn’t the intended behaviour” and promised fixes for both problems. v0.2.0 shipped them the same evening. Sessions now live under $XDG_STATE_HOME/unreal-agent/sessions (default ~/.local/state/unreal-agent/sessions), the log is written only with -log-directory, and the Docker image gained a writable /state directory and XDG_STATE_HOME=/state; the README shows mounting a named volume there. The release body names the XDG-state and opt-in-log change; it does not explain the old-session lookup trap. The upgrade trap sits in openSession, which at every tag creates a fresh session when the requested session_id is not found. A v0.1.x session resumed on v0.2.0 or later without -session-directory .harness/sessions therefore starts empty under the same ID, with no error. The file format did not change (version 2 at every tag), and v0.3.0 upgrades legacy reasoning items when it reads them (itemjson.go L63, L101), so moved files still resume. The rest of #3 is unfixed. The Bash execution code is identical at v0.1.1 and v0.3.1: there is no per-command timeout and no cap on the on-disk capture. Only the text the model sees is bounded.

Channel: tagged-release. Half: both. Date: 2026-09-23.

Operator consequence: On any host that ran 0.1.x, resume old sessions with -session-directory <old cwd>/.harness/sessions, or move the files into the XDG path. After migrating sessions and reviewing retention, remove unneeded .harness/sessions and logs/ directories from repositories; they hold full transcripts and tool output. Wrap long commands in timeout and put a disk quota on the state directory, because nothing in the harness stops a runaway command. By code reading, the self-feeding loop can come back whenever the workspace contains the state directory, for example when the TUI is started from $HOME. Launch it from the project directory instead.

Receipt

Finding metadata

Run: 2026-10-13-profile-refresh-2026-09-21_2026-10-13-frontier-v0

Finding ID: 2026-10-13-unreal-agent-v0-2-0-moves-sessions-out-of-the-workspace-after-a-61-8-gb-runaway-an-old-session-id-resum

Profile citations

Source links

Primary links, including exact changelog lines when available.