Releases: b1rdmania/ghostclaw
v0.7.7 — Orphaned MCP server fix
What's new
Fix
-
Orphaned MCP servers eliminated — when a session ended via SIGKILL (idle/absolute timeout or `/reset`), only the top-level agent-runner process was killed. MCP servers spawned inside it by the Claude Agent SDK had no parent and were left running, accumulating over time as stale processes.
Agent processes now spawn with `detached: true`, creating a dedicated process group. Timeout kills and `/reset` now use `process.kill(-pid, signal)` to tear down the entire group at once — agent-runner and all MCP children together.
To update: run `/update-ghostclaw` in your main chat.
v0.7.6 — SDK auto-update + broken session recovery
What's new
New
- Weekly SDK auto-update — launchd job runs every Monday at 3am, updates
@anthropic-ai/claude-agent-sdkto latest, rebuilds the agent-runner, and restarts GhostClaw only if the version changed. Keeps the SDK current so new models are always available. Logs tologs/sdk-update.log.
Fixes
- Broken session auto-recovery — when a session transcript is missing from disk (e.g. after a data directory wipe or path migration), the SDK returns
error_during_executionon resume. The orchestrator now detects this and clears the bad session ID automatically, so the next message starts fresh. Previously required manualDELETE FROM sessionsin the DB. - SDK updated — bumped
@anthropic-ai/claude-agent-sdkfrom 0.2.34 → 0.2.92.
v0.7.5 — Heartbeat + session validation path fix
Fixes
-
Agent-runner heartbeat — writes a keepalive marker to stdout every 2 minutes. The container-runner already resets the idle timer on any stdout data, so this prevents false stall timeouts during Task sub-agent waits (which produce no other stdout). The
task_notificationSDK event only fires on sub-agent completion, not during execution — meaning the stderr-based idle reset in v0.7.4 was insufficient for long Task waits specifically. -
Session validation path bug fixed — the leading slash in the CWD was being stripped when constructing the session
.jsonlpath, causing validation to always miss the file and silently do nothing. Claude Code keeps the leading dash in the project directory name (e.g.-Users-ziggy-nanoclaw-groups-main). Now constructed correctly.
v0.7.4 — Idle timeout architecture fix
Fixes
-
Idle timer now tracks agent activity, not user-facing output — the idle timer previously only reset on stdout (user-facing results). All internal activity — tool calls, Task sub-agent progress, SDK messages — logs to stderr and was invisible to the timer. A research task using a Task sub-agent would always hit the idle timeout because the parent session is silent while waiting for the sub-agent result. The stderr handler now also resets the idle timer, so "idle" correctly means "no activity at all" rather than "no output to Birdmania."
-
Session validation before resume — before passing a session ID to the SDK, the agent-runner scans the session
.jsonlfor unmatchedtool_useentries. A broken session (parent timed out mid-Task) caused the SDK to hang silently on resume. Now detected and cleared before the hang, starting fresh instead. -
Clear session on no-output idle timeout — if the orchestrator receives an idle timeout with no streaming output and no new session ID, it clears the stored session before retrying. Belt-and-suspenders with session validation above.
-
Stderr in timeout logs — timeout log files now include stderr output, making stall diagnosis significantly easier.
-
Model updated —
GHOSTCLAW_MODELbumped fromclaude-sonnet-4-5-20250929toclaude-sonnet-4-6.
v0.7.3 — Anti-duplicate research
What's new
- Recent files context injection — every agent prompt now includes a listing of files modified in the last 20 minutes. Agents see what was recently created and build on it rather than producing duplicate research docs across sessions.
- CLAUDE.md dedup instruction — templates now tell agents to search for existing files before creating new ones.
Bug fixes
- Prevents the duplicate research file problem when conversations span multiple agent sessions (e.g. two research docs on the same topic from the same chat).
v0.7.2 — Unified reset command
What's new
/resetis now a full reset — kills all agents, clears scheduled tasks, wipes session files, kills orphan processes, and restarts. Previously/resetonly cleared the queue and killed the active agent, leaving stale session context behind./hardresetremoved — one command, no confusion. Users see one chat, they need one reset./modelsession reset preserved — switching models still does a lightweight session-only reset internally.
Breaking changes
/hardresetcommand no longer exists. Use/resetinstead — it now does everything/hardresetused to do.
v0.7.1 — Hard reset, enriched status, Ralph safeguards
What's new
/hardresetcommand — nuclear reset that kills all agents, clears scheduled tasks, wipes sessions, kills orphan processes, and restarts.- Enriched
/statuscommand — now shows version, scheduled tasks count, running processes, memory usage, session size, and categorized error summary for today. - Memory reliability improvements — session file cleanup on reset, preventing ghost context from old conversations.
- Ralph safeguards — better failure handling and complexity-based iteration limits.
- Fast-path routing — infrastructure for lightweight API calls on simple messages (mothballed pending API key support).
- PID lock hardening — prevents duplicate process spawning.
- Session auto-prune — stale sessions cleaned up automatically.
v0.7.0 — Bounded message history
What's new
- Bounded message history queries — prevents memory/token overflow when context grows large. Previously unbounded queries could cause agent crashes and ballooning token usage.
- Ralph complexity estimation — Ralph now estimates iterations needed based on task complexity before starting.
- Startup notification — GhostClaw sends version info to main group on boot.
- Ralph iterations reduced — default dropped from 50 to 10, now configurable.
Bug fixes
- Fixed unbounded message history queries that caused 79% timeout rate during heavy Ralph usage (March 30 incident).
v0.6.9 — Structured memory + process watchdog
New
Structured memory system — replaces the monolith CLAUDE.md with three files:
memory/identity.md— who the agent is (read once per session)memory/state.md— active projects, current status (read every message)memory/log.md— append-only decisions and completed work
CLAUDE.md becomes pure instructions — no project data. New installs get this from /setup-ghostclaw. Existing installs can migrate with /migrate-memory (non-destructive, backs up first).
Runaway process watchdog — heartbeat now auto-kills zombie Chrome/agent-browser processes consuming >90% CPU. Also monitors load average and alerts if >4. Run /add-heartbeat to get the updated checks.
Remote debug via Telegram — text your agent "check load", "check memory", "what's eating CPU", or "kill chrome" and it runs the commands and reports back.
Upgrade
Send /update in Telegram, or manually:
cd ghostclaw && git pull origin main && npm install && npm run buildThen restart your service. The memory migration is optional — run /migrate-memory when you're ready.
v0.6.8 — Clean session lifecycle
Fixes
-
Sessions now exit cleanly after 2 minutes of inactivity — previously the agent held its session open for 30 minutes after responding, then got killed by the 10-minute idle timeout. This caused error logs on every single response and wasted resources. Now the host sends a
_closesignal after 2 minutes of no follow-up messages, and the agent exits gracefully. -
If a follow-up arrives within 2 minutes, it's handled in the same session with full conversation context. No change to how conversations work — just faster cleanup when you're done.
-
The 10-minute idle timeout in the container-runner remains as a safety net for truly stuck agents, but should no longer fire during normal operation.
Upgrade
Send /update in Telegram, or manually:
cd ghostclaw && git pull origin main && npm install && npm run buildThen restart your service.