Netclaw v0.22.1 — Quick bug-fix release on the heels of 0.22.0
Bug Fixes
-
GitHub Copilot provider additions now persist — the TUI provider manager was losing newly added Copilot providers between sessions. Additions now stick correctly. (#1271)
-
OpenAI Codex models discovered live — Netclaw can now probe the OpenAI API to discover Codex models at runtime, auto-populating context windows and modalities. No more waiting for a software update to access the latest Codex features. (#1268)
-
ChatGPT OAuth account ID resolution restored — the OAuth flow for ChatGPT providers was returning the wrong account identifier, breaking authentication. Fixed. (#1263)
-
Vision model images no longer dropped between turns — when using vision-capable models, images attached via tool calls were being lost when crossing turn boundaries. Images now survive turn transitions properly. (#1265)
-
CLI no longer crashes when daemon is offline — attempting to chat while the Netclaw daemon was unreachable would crash the CLI. It now handles this gracefully and provides useful feedback. (#1258)
Netclaw v0.22.0 — Subagents that actually stick around, sessions that remember their place, and a few long-standing gremlines squashed
Features
- Files that aren't text? Now handled properly — when Netclaw reads a file that could contain an image, audio, or other non-text content, it now classifies it upfront instead of silently guessing or skipping over it. Along with a brand-new unified file-type classifier that replaced the old patchwork of per-source detection logic, this means attachments, uploads, and multimodal reads all work from the same reliable taxonomy. No more "huh, where did that go?" (#1245, #1240)
Bug Fixes
-
Subagents that don't vanish mid-task — this release packs three subagent hardening fixes into one release. The inactivity watchdog now pauses while waiting for your approval instead of ticking down and killing a perfectly healthy subagent (#1203). Headless execution is more resilient to edge-case failures (#1236). And subagents now share the same two-phase streaming watchdog as the main session, so they don't silently lose progress tracking anymore (#1243). If you've ever watched a subagent stall out for no reason, this should feel like a breath of fresh air.
-
Tool approvals that survive a restart — previously, if Netclaw restarted between you approving a tool call and it actually running, the session could lose track of what you approved and start confusing you with re-prompts. Approval context now persists through cold restarts and passivation — you say yes once, it stays yes. (#1219)
-
That annoying tool-loop? Gone — if Netclaw's volatile per-turn context (time, working notes, memory recall) got placed after your message, some LLMs would mistakenly treat it as a signal to keep going, spiraling into tool loops. We moved it before the user message where it belongs (as a System-role prefix), and the spin is gone. (#1218)
-
Session logs that actually stay complete — on Windows especially, AV scanners would occasionally grab the log file mid-write and cause lines to vanish without a trace. We switched to a persistent file handle instead of opening/closing per line, and the flake is fully resolved. Your session logs now stay intact. (#1254, #1246)
-
Webhooks and autonomous tasks can finally run shells — the tools subsystem had a blocking path that quietly prevented non-interactive shell execution in webhook and autonomous contexts. If you've ever tried to trigger a shell command from a webhook and gotten nothing back, this is the fix. Webhook provenance is also now properly tracked, and the autonomous filesystem zone works as intended. (#1250)
-
Discord doesn't post to dead threads anymore — after a session resume, Discord channel bindings used to carry stale state and could deliver messages to threads that no longer existed. A clean reconnect on resume fixes that. (#1239)
-
Slack audience overrides hit the right channel — if you've ever set an audience override on Slack and watched it apply to the wrong channel, this is for you. Overrides are now keyed by the actual channel ID instead of a stale reference. (#1231)
-
Your memories stay intact — the memory system was doing a couple sneaky things: silently dropping updates when the LLM returned nothing useful, and occasionally truncating memories on store. Neither happens now. Also, compaction-boundary summaries (the internal housekeeping notes) are filtered out of automatic recall so they don't clutter your search results. (#1242, #1225)
-
Secrets don't get corrupted — the secrets upsert path had edge cases around concurrent edits that could corrupt or lose values. The path is now robust against those scenarios. (#1234)
-
Subagent approvals don't race — the approval state machine for subagents had a few race conditions that could cause approvals to be missed or duplicated. Cleaned up. (#1217)
-
Self-hosted providers initialize properly — providers pointing at self-hosted endpoints now correctly pick up their context metadata on startup. If your self-hosted endpoint was acting weird during init, this should help. (#1227)
Dependencies
- Bumped
actions/download-artifactfrom 7 to 8. (#1052) - Bumped
actions/setup-dotnetfrom 4 to 5. (#1166) - Bumped
actions/checkoutfrom 4 to 6. (#1167) - Bumped
docker/setup-qemu-actionfrom 3 to 4. (#839) - Bumped
AButler/upload-release-assetsfrom 3.0 to 4.0. (#854) - Bumped
YamlDotNetfrom 16.3.0 to 18.0.0. (#1180) - Bumped
Terminato 0.10.2. (#1235) - Bumped
incrementalist.cmdfrom 1.2.0 to 1.2.1. (#1222) - Bumped
AnthropicSDK from 12.23.0 to 12.24.1. (#1221) - Bumped
slopwatch.cmdfrom 0.4.0 to 0.4.1. (#1223) - Bumped the Akka group with one update. (#1220)