NanoClaw 2026.11.0-beta.1 is the first beta of 2026.11.0: an early test build, so expect rough edges. The November release takes the place of 2026.10.1, which never becomes a stable release; its two release candidates stay published, and everything they brought is in this entry. Installs on the beta channel get this beta; stable stays on 2026.10.0 until 2026.11.0 is published. Since 2026.10.1-rc.2, a stuck channel send no longer silences a conversation, agents can put KPI fields, a table and charts in cards, setup on Linux and WSL asks for your password in the open before it installs Node or Docker, setup on Linux reaches Docker right after it adds you to the docker group, setup names the NanoClaw account a machine is signed in to and lets you switch it, Discord server messages that @mention someone reach the agent, agent reactions reach Telegram, Mattermost recovers by itself from a short outage at startup, the OneCLI upgrade guide deletes the Dial key only when it has to, and locally built agent images clear every known High and Critical advisory that had a fix. Since 2026.10.0 it moves OneCLI to 1.45, where new agent groups get only their model key and other keys go to the groups you choose, makes the webhook server listen only on this machine by default, applies egress lockdown to agents that were already running, asks for Node's October 2026 security releases, and lets Claude agents read PDFs; Google Chat now checks that its webhooks come from your app. It also lets agents create other agents from templates, adds Cursor as an agent provider, and moves locally built agent images to Claude Code 2.1.296 with Claude Haiku 5.5. Six changes need action from some installs, among them the OneCLI upgrade, the webhook address and two new Google Chat settings, so check the section below before you update.
⚠️ Before you update
- [BREAKING] Chat SDK channels move to adapter 4.41.1, which fixes Telegram messages with links that were never delivered. Affected: installs where
grep -o '"@chat-adapter/[a-z]*"' package.jsonprints anything (Telegram, Slack, Discord, Google Chat, Teams, WhatsApp Cloud, GitHub, Linear). Fix:/update-nanoclawrefreshes installed channels; after a manual merge, rerun/add-<channel>for each one. Google Chat: @mentions in spaces now needGOOGLE_CHAT_BOT_USER_ID=users/<id>in.env(DMs work without it; without it the log says "Google Chat botUserId is not configured" at startup): once the app has replied to you in a DM, list that DM's messages with the Chat API (spaces.messages.list), copy thesender.nameof a message whose sendertypeisBOT, and restart the service. Slack agent-to-agent rooms: a sibling bot now arrives asslack:bot:U…instead ofslack:bot:B…, so approve each sibling bot once more. Check: each channel answers a test message. Rollback:pnpm exec tsx scripts/update-nanoclaw.ts rollback --id <transaction-id>(rolling back). - [BREAKING] Iron Proxy installs that connected Codex with ChatGPT before this release must sign in to Codex again. Detect, from the NanoClaw folder (works while the service is stopped):
f=data/session-materials/iron-control/codex.json; [ -f "$f" ] && grep -q '"mode":"chatgpt"' "$f" && ! grep -q '"accountId"' "$f" && echo affected. Once running, an affected install's Codex agents answer only with the failure notice ("Sorry, something went wrong and I couldn't answer") and the agent container log showsselected workspace missing from routing discovery. Why: Codex 0.156 and later check the login's workspace id, and older Iron logins never recorded it. Fix:pnpm exec tsx setup/index.ts --step provider-auth codex, then check that a Codex agent answers. OneCLI installs are affected only when the vault holds several ChatGPT logins or one without a recorded id; the host log then says "OneCLI login stand-in keeps its placeholder account id": delete the extra or stale login (onecli secrets list, thenonecli secrets delete --id <id>), run the same command, and grant the new secret to each agent that had the old one, asdocs/onecli-upgrades.mdin your install describes. Rollback: return to the previous release. - [BREAKING] Forks and hand-made templates: the template code moved and
templates/is now ignored by git. Affected: fork code that importscloneRegistry,listTemplatesFromDir,copyTemplateorDEFAULT_TEMPLATES_SOURCEfromsetup/templates.ts(it stops compiling), forks that edit theGROUP_SCOPE_RESOURCESline or the stamper'sensureContainerConfigline, forks that point setup at their own template library, and anyone who keeps a hand-made template intemplates/. Why: templates fetched by setup or by an agent are install state and must not block/update-nanoclaw, and setup now lists a library from itsindex.json. Fix: importcloneRegistryandlistTemplatesFromDirfromsrc/templates/library.tsandawait cloneRegistry();copyTemplateis gone, so callensureTemplateLocal; a fork that changedDEFAULT_TEMPLATES_SOURCEeditsLIBRARY_REPO(owner/repo) andLIBRARY_BRANCHinsrc/templates/library.tsinstead; re-anchor fork edits on the new lines; keep a new hand-made template in git withgit add -f templates/<ref>; give your own library anindex.jsonat its root in the same shape asnanocoai/nanoclaw-templates({ "schema": 1, "categories": { "<category>": [{ "ref": "<folder>", "name": "...", "description": "..." }] } }). Check:pnpm exec tsc --noEmitpasses and setup's library picker lists your templates (building templates). Rollback: revert this release; fetched templates then show as untracked ingit status, so delete them orgit addthe ones to keep. - [BREAKING] OneCLI installs: upgrade the gateway to 1.45.0 and the
onecliCLI to 2.11.0, where agents get only the keys you grant them. Detect: the gateway's/api/healthreports a version older than 1.45.0, orunknown(Iron Proxy installs skip this). Why: OneCLI 1.44 replaced secret modes with per-agent grants, and 1.45 is the last version that converts existing installs, so do not skip past it. Fix: before restarting, followdocs/onecli-upgrades.mdin your install (the same guide on GitHub); it backs up the gateway database, stops if the conversion would delete your rules, and covers the CLI binary. If you use/add-dial-tool, run the guide's Dial check before you pull; it deletes the Dial key only when the upgrade could hand it to agents you kept away from Dial (see the Dial item below). Existing groups keep what the conversion gives them; new groups get only their model credential, and on a 1.42 gateway new groups still get every key until you upgrade. To give a group a tool, re-run that tool's skill (for example/add-vercel) and pick the group; with/add-tavily-tool, re-run its Phase 5 so paid-key upgrades attach the key./add-vercel,/add-tavily-tooland/add-dial-toolrefuse a gateway that is not 1.45. If your Claude key in OneCLI is not namedAnthropic(or your Codex keyCodexoropenai), new groups get no key: run that provider's login again after upgrading (pnpm exec tsx setup/index.ts --step gateway-auth claude, orcodex). Check:/api/healthreports 1.45.0 and a new agent group answers. Rollback: restore the database backup the guide takes. - [BREAKING] The webhook server now listens on 127.0.0.1 by default. Tunnels and reverse proxies on the same machine keep working. Affected: a proxy on another machine, or anything in Docker on Linux that calls back to the host, such as a Mattermost server; webhooks stop arriving, and the log shows
Webhook server started host="127.0.0.1". Fix: setWEBHOOK_HOST=0.0.0.0(or one interface's IP address; a name such aslocalhoststops the host at startup) in.envand restart. Check: a message on that channel gets an answer. Rollback: the same setting restores the old behavior. - [BREAKING] Google Chat installs need two new settings, or the channel does not start. Google Chat now verifies that webhooks come from your Workspace add-on Chat app, using
GOOGLE_CHAT_ENDPOINT_URLandGOOGLE_CHAT_PROJECT_NUMBER(digits) in.env;/update-nanoclawbrings the new adapter but cannot ask for them. Detect: the log says "Google Chat needs GOOGLE_CHAT_ENDPOINT_URL and GOOGLE_CHAT_PROJECT_NUMBER (digits) in .env to verify webhooks". Fix: re-run/add-gchat, which keeps your existing values and asks for the endpoint URL, the project number and the bot user id for @mentions in spaces, or set both values by hand and restart. The Chat app must be a Google Workspace add-on, and converting an app to one cannot be undone. Check: a test message gets an answer. Rollback:pnpm exec tsx scripts/update-nanoclaw.ts rollback --id <transaction-id>. /add-dial-toolusers: run the upgrade guide's Dial check before upgrading OneCLI. It reads only, and saysdeleteonly when the gateway has not converted yet (1.43 or older) and the upgrade could remove what keeps agents away from Dial, such asDial: blocked agents, or when it cannot read all the rules that decide; a gateway already on 1.44 or later keeps its Dial key and its grants. When it saysdelete, the guide's--deletecommand removes the key; re-run/add-dial-toolafter the upgrade, which gives the Dial key only to the agent groups you choose, and new groups get Dial only when you add them. NanoClaw'sONECLI_PROJECT_IDand theonecliCLI's project (onecli config set project, orONECLI_PROJECT) must match or both be unset: when they differ, the re-run stops and writes nothing to OneCLI. An agent group name with a line break no longer changes which groups keep Dial.- Update Node to its October 2026 security release. Setup now requires Node 22.23.4, 24.22.1 or 26.12.1 or newer and refuses the end-of-life 23 and 25; locally built agent images move to Node 22.23.4, pinned by digest, and hardened installs get it with a later image. NanoClaw keeps running on an older Node; re-running setup picks a Node that meets the minimum, and stops only when it finds none. After
/update-nanoclaw, runbash setup/install-node.sh, then re-runbash nanoclaw.shso the service uses the new Node. If Node comes from nvm, fnm, volta or asdf, update it there. Groups with extra packages also needncl groups restart --id <group-id> --rebuild. - Egress lockdown now covers agents that were already running when it was turned on: they restart on the locked network when the host restarts. If the lockdown network exists but is not internal (only a network made by hand, or a setting that points at an ordinary one), agents no longer start and the host log says "Refusing to spawn with open egress". Fix: list what is attached with
docker network inspect nanoclaw-egress, detach it (docker network disconnect nanoclaw-egress <container>), thendocker network rm nanoclaw-egress; the next agent start recreates it as internal. Iron Proxy installs name itnanoclaw-egress-<slug>, andNANOCLAW_EGRESS_NETWORKcan set another name. - Locally built agent images move to Claude Code 2.1.296 and Agent SDK 0.3.296, where Claude Haiku 5.5 replaces Haiku 4.5. On the Anthropic API, Claude Code's background requests and groups set to
haikumove to Haiku 5.5, which costs a tenth of Haiku 4.5's price for prompts up to 100K tokens. Hardened installs keep Claude Code 2.1.280 and Haiku 4.5 until an image for this release is listed. - Hardened installs move to the image built from v2026.10.0. A pull now takes the image listed in
agent-images.jsononmainfor the newest release in the install's history, so a new hardened image reaches installs without a new release. Betas and release candidates never get an image of their own, so this beta uses v2026.10.0's (Claude Code 2.1.280, newer than the old pinned build), and the pull's "agent-runner lock drift" warning is expected. This beta lists a newer build of that image, made on 2026-11-03, so/update-nanoclawpulls it again. Runpnpm exec tsx setup/index.ts --step registry -- --refreshto move onto it (hardened runtime). - Codex groups with no model set start new threads on GPT-6.1 Sol.
/add-codexnow pins@openai/codex0.162.1; existing threads keep their model. To stay on the old one, runncl groups config update --id <group-id> --model gpt-6-astra, thenncl groups restart --id <group-id>. - OneCLI installs:
/update-nanoclawmay stop at apnpm-lock.yamlconflict. Setup's local gateway commit adds@onecli-sh/sdkto the lockfile, next to lines this release changes. The skill resolves it in its staging copy (it takes the new lockfile and runspnpm install --lockfile-only), so let it finish; after a manual merge, do the same.
✨ New
- Agents can create other agents from templates. Ask for one in chat, pick from
ncl templates listor the public library, and the agent builds it. Setup's template library list now shows what each template does (using templates). - Cursor is an agent provider. The new
/add-cursorskill runs Cursor's Agent SDK, and setup offers Cursor in the provider picker; it needs a locally built agent image (providers). - Setup waits for a slow first reply instead of failing. The first-chat check waits 2 minutes, then asks whether to keep waiting, and shows each stage (sandbox, agent runtime, model) with its time, so local models that take minutes to load no longer fail setup. Runs without a terminal now stop after 2 minutes instead of 30 seconds.
- Agents on slow local models are no longer cut off mid-turn. Raise
NANOCLAW_ABSOLUTE_CEILING_MS(default 30 minutes) orNANOCLAW_CLAIM_STUCK_MS(default 60 seconds) in.env; the host log names which one fired. Restart the service after a change; installs that set neither are unaffected (environment variables). - Agents can put KPI fields, a table and charts in a
send_cardcard. Slack draws them natively and Teams shows a chart as a table; WhatsApp Cloud doesn't show tables or charts yet, and Mattermost doesn't show charts, so agents put those numbers in text there. The linked-device WhatsApp channel (/add-whatsapp) doesn't show cards at all. A card's whole text, title and description included, may be up to about 12,000 characters;send_cardrefuses a longer card with the reason, so the agent can send a smaller one. Channels have lower limits of their own, such as 4,096 characters for a whole card on Telegram, and 150 for the title and 3,000 for the description on Slack; a card over them can be cut off or not posted. - Early test builds are now called betas. They are tagged
vX.Y.Z-beta.N, and-rc.N(release candidate) is kept for the last build or two before a release. Thebetachannel offers the newest beta or release candidate that is newer than stable, andstablenever offers either./update-nanoclawreads this rule frommain, so beta installs on 2026.10.1-rc.2 get this beta as they are.
🛠️ Fixes
- Setup tells you when your assistant's first reply failed. Instead of saying the assistant is ready (for example after a bad API key), it shows the agent's error, names the log files and links the troubleshooting docs;
pnpm run chatexits with code 4 on a failure notice. When an agent has no error of its own to share, every channel's failure notice now reads "Sorry, something went wrong and I couldn't answer" and links the troubleshooting docs. - Setup on Linux and WSL asks for your password up front. It asks in the open, right before it installs Node or Docker, instead of hiding the sudo prompt behind the progress spinner. On WSL, the docker-group message now tells you to run
wsl --shutdown. - Setup on Linux reaches Docker right after it adds you to the docker group. The service kept the groups it started with, so it could not open Docker and kept restarting; setup's workaround needs the
aclpackage, which stock and minimal Ubuntu lack. Setup now installsaclon apt systems, gives your user access to Docker until Docker restarts, and starts the service without a crash wait; a reboot (orwsl --shutdownon WSL) makes it last. If it still can't reach Docker, setup prints the commands to run. - Setup names the NanoClaw account this machine is signed in to. At the hardened image and managed Slack steps it asks "Continue as " or "Use a different account", so switching no longer means deleting
account.json. A first sign-in prints a short code in the terminal: approve only if the sign-in page shows the same code. - Agents no longer lose or repeat a reply around
send_message. An agent that sent something withsend_messageand then left its answer unwrapped is shown what it already sent and asked to finish, and an exact repeat is not sent twice. On streaming providers, a reply sent withsend_messageand followed by plain closing text costs one extra model turn. - A stuck channel no longer silences agents. NanoClaw stops waiting on a send after 60 seconds, logs
Message delivery passed its deadline, and keeps delivering that conversation's later replies until 3 of its sends are stuck at once; chats wired to share one session (agent-shared) count as one conversation. A stuck message is retried if its send fails, and marked failed if there is still no answer an hour later. Other conversations keep going while up to 8 are stuck; with more, their replies can wait a minute or more. - Fewer failed agent runs. On Docker Desktop, a message that arrives while an agent is replying no longer fails the run, and "Permission denied" replies to admin-only commands are sent directly to the chat. On every install,
ncland agent tools no longer hit intermittent "database is locked" errors. - Approval cards appear where you are waiting and are easier to read. When an agent in a thread of your own DM asks for approval, the card and its "Reject with reason" prompt appear in that thread. Cards show command arguments and agent-to-agent messages in a code block, and names and the install reason quoted on one line. An approval an agent asks for, or an
ask_user_question, whose title and question together run over 2,000 characters is refused, and the agent is told the limit so it can shorten it;ask_user_questionalso returns an error within seconds of the host giving up on delivering its card, instead of waiting out its 300-second timeout. - The background service finds the tools it was installed with. On macOS it now includes
/opt/homebrew/binand the Node.js folder, so Apple Silicon installs using Homebrew or Apple Container no longer crash at start; on Linux it includes the Node.js folder (for example from nvm). Existing installs get it by runningpnpm exec tsx setup/index.ts --step serviceonce. /update-nanoclawno longer stops at its validate step on installs with Slack. The skill refresh now credits each channel import to the skill that adds it, so it stops looking for Slack skills that don't exist. The fix comes with the update itself.- Discord: Approve on an approval card now approves. Button clicks were misread, so approvals were recorded as rejections and answers to questions came back garbled.
- Discord: server messages that @mention someone reach the agent. Chat SDK adapter 4.41.1 dropped every server message with an @mention, including ones that mention the bot;
/add-discordand/update-nanoclawnow apply a patch with the upstream fix. After a manual merge, rerun/add-discord. - Agent reactions reach Telegram and other Chat SDK channels. They failed with "message to react not found" and were dropped after three tries.
- Mattermost recovers by itself from a short outage at startup. When the server, or a proxy in front of it, is unreachable or answers with a server error, it tries 3 more times, waiting 2, 5 and then 10 seconds, instead of staying offline until NanoClaw is restarted; after a longer outage, restart NanoClaw once the server is back.
/update-nanoclawbrings it; after a manual merge, rerun/add-mattermost. - Claude agents can read long PDFs you send them. Installs that build their own agent image get it from the image rebuild in
/update-nanoclaw; groups that installed their own packages also needncl groups restart --id <group-id> --rebuild. Hardened installs get it with a later image. - Google Chat attachments reach the agent. On channels whose message ids contain
/, such as Google Chat, files were dropped and the agent saw only the file name. When someone shares a file from Google Drive, the agent now says it can't open Drive files and asks for the file to be pasted or dragged into the chat. - Resend email replies are sent. Agent replies and the "Connect yourself" hello failed with
Invalid thread ID format; they now go out, and a reply lands in the email thread the person last wrote in./update-nanoclawbrings it; after a manual merge, rerun/add-resend. - Smaller fixes. An agent reads its own replies from other threads of the same chat as its own, not as another agent's;
ncl groups deletealso removes the group's host bookkeeping rows, and agents that could message it stop listing it right away; creating an agent from a template no longer fails when an agent that has not run yet holds that name; a Slack bot set up for channels only no longer sends you an FYI each time it turns away a DM;ncl messaging-groups deletealso removes the group's wirings, its own sessions and pending approvals instead of failing with a foreign key error, and removing iMessage uses it; creating an agent refuses a name whose group folder would be invalid (too long, or reserved such as "Global") before anything is written, and says why; setup accepts Anthropic's newer API key types (sk-ant-usr,sk-ant-svc), which must be scoped to one workspace; Linux Signal setup installs signal-cli 0.14.9, which fixes sends to new contacts hanging (rerunsetup/install-signal-cli.sh, then restart the service); whennclcan't reach the host, it also shows the restart command for Linux without systemd (for example WSL); and the/add-dashboarddashboard keeps updating when a transcript grows past about 512 MB and no longer re-reads every transcript each minute (rerun/add-dashboardto get it).
🔒 Security
/add-resendinstalls a Resend adapter with no known advisories. The pin moves from 0.1.1 (4 moderate findings throughuuid) to 0.3.0, and/update-nanoclawmoves existing email installs to it (after a manual merge, rerun/add-resend). The webhook now answers before the message is processed, so a message that fails is not retried, and replies are sent as HTML with a plain-text part that drops link targets.- Signal setup checks the signal-cli download's sha256 before installing it.
- OneCLI setup keeps keys off the command line. Setup now gives keys to the
onecliCLI through a private temporary file or stdin, and hides them in error messages. If setup ever failed while saving your Anthropic key or OneCLI API key, rotate that key and delete the old files inlogs/setup-steps/andlogs/setup.log. - Locally built agent images move to Bun 1.4.4, which no longer trusts the revoked eMudhra certificates.
/update-nanoclawrebuilds the image; hardened installs get it with a later image. - Locally built agent images clear every known High and Critical advisory that had a fix. The image ships npm 11, pnpm 10.34.9, a fresh build of its Node 22.23.4 base and updated agent-runner libraries.
/update-nanoclawrebuilds the image; hardened installs get it with a later image. - Re-applying a template to an agent (restamp) can no longer be pointed outside its group folder. It refuses, with an error, to write a context file or skill through a folder in the group folder that was swapped for a link, and checks template file names more strictly. On a Mac this needs the NanoClaw folder on an APFS or HFS+ disk (the usual Mac disk); on other disks these writes are refused.
🔧 For custom installations
- Custom container code that reads
inbound.dbthroughopenInboundDb()orgetInboundDb()(mailbox/sqlite/connection.ts) must usereadInbound((db) => ...):openInboundDb()is gone, andgetInboundDb()now works only in tests. /add-codexships its provider inside the skill, so installs and forks no longer need the providers branch; on an older core its instructions tell you to update core first. Codex archives pick up core's header fix (the thread-id line no longer renders as a heading).- Provider skills can archive exchanges through core. Use
container/agent-runner/src/provider-contracts/exchange-archive.ts; refreshing/add-codexdeletes the old copy inproviders/exchange-archive.ts, so a custom provider that imports it must switch. - A gateway credential can target one exact path on a host. The provider credential seam moves to version 2: a custom provider skill that requires exactly version 1 must accept 1 or later, a skill that sets
pathmust require 2, and a custom gateway must declareconnectionPaths: trueto accept path-scoped credentials. - The agent image no longer installs
cron-parseror itsluxondependency (about 4.9 MB); scheduling still runs on the host. Custom container code that imported them must add them back. - Forks that pointed the
versions.jsonagent-image pin at their own mirror must move that reference toNANOCLAW_AGENT_IMAGE_REF, because theagent-images.jsonlist now comes first. - Forks no longer run the agent-image refresh workflow, which failed every 6 hours outside
nanocoai/nanoclaw. - OpenCode:
OPENCODE_NATIVE_ATTACHMENT_MAX_BYTESandOPENCODE_NATIVE_ATTACHMENT_MAX_COUNTare gone; they never took effect. - Forks that move
@chat-adapter/discordoff 4.41.1 must also remove thepnpm.patchedDependenciesentry/add-discordadds, or pnpm stops withERR_PNPM_UNUSED_PATCH; 4.42.0 and later carry the fix.
New Contributors
- @dependabot[bot] made their first contribution in #4066
- @bmultini made their first contribution in #4081
- @patrick-hofmann made their first contribution in #1938
- @refactornator made their first contribution in #1604
- @NechuBM made their first contribution in #4086
- @shachartal made their first contribution in #3570
- @carstenf made their first contribution in #4117
- @witek made their first contribution in #3451
- @nanoclaw-image-refresh[bot] made their first contribution in #4179
- @stefancgillberg made their first contribution in #4022
- @antonio-antuan made their first contribution in #3970
Contributors
Thanks to everyone who landed work in this release:
- build(deps): bump source-map-js from 1.2.1 to 1.2.2 by @dependabot[bot] in #4066
- chore(container): bump Claude Code to 2.1.296, the Agent SDK to 0.3.296 and Codex to 0.162.1 by @gavrielc in #4069
- feat(permissions): a decline can skip the owner FYI by @amit-shafnir in #4070
- fix(approvals): approval card joins the requester's thread in their own chat by @amit-shafnir in #4080
- fix(agent-runner): never lose or repeat a reply around send_message by @glifocat in #3918
- build(deps-dev): bump vitest from 4.1.4 to 4.1.11 by @dependabot[bot] in #4067
- test(update-skills): isolate registry-remote env overrides by @bmultini in #4081
- ci: pin workflow runners to ubuntu-26.04 by @glifocat in #4085
- test(setup): keep channel-skill fixtures out of the checkout by @glifocat in #4087
- fix(setup): bump signal-cli to 0.14.9 and verify the download by @glifocat in #4093
- build(deps-dev): clear 11 dev-only Dependabot alerts by @glifocat in #4089
- chore(agent-runner): drop unused cron-parser dependency by @glifocat in #4088
- fix(sweep): global env overrides for ABSOLUTE_CEILING_MS and CLAIM_STUCK_MS by @glifocat in #3646
- chore(skills): bump the Resend adapter pin to 0.3.0 by @glifocat in #4042
- fix(cross-session-context): the agent's own replies from other threads read as "you" by @amit-shafnir in #4092
- feat: create agents from templates in chat by @amit-shafnir in #4112
- feat(setup): the template library picker reads the index by @amit-shafnir in #4113
- fix(templates): a template create skips a folder an unspawned group holds by @amit-shafnir in #4120
- fix(agent-runner): retry inbound.db reads caught mid host write by @amit-shafnir in #4118
- fix(router): send the command-gate denial without writing outbound.db by @amit-shafnir in #4119
- fix: include /opt/homebrew/bin in launchd plist PATH by @patrick-hofmann in #1938
- fix(agent-runner): set busy_timeout before journal_mode on outbound open by @glifocat in #4101
- ci: check the signal-cli hash and open an issue for new releases by @glifocat in #4096
- fix: include Homebrew and node paths in service PATH by @refactornator in #1604
- fix(add-dashboard): read transcripts without loading whole files by @NechuBM in #4086
- ci(stale): add author-blocked stale policy; closing stays in dry run by @glifocat in #3656
- fix(setup): score the agent's failure notice as a failed first chat by @glifocat in #3980
- fix(approvals): keep untrusted text on one line in approval cards by @glifocat in #4090
- fix(channels): bump chat core + adapters to 4.41.1 — Telegram drops URLs with odd underscore counts by @shachartal in #3570
- feat(container): pull the hardened image published for each release by @amit-shafnir in #4139
- fix(approvals): post long approval cards in full as text blocks by @glifocat in #4135
- feat(gateways): let a credential connection target one path by @glifocat in #4106
- feat(agent-runner): add a shared exchange archive for provider contracts by @glifocat in #4105
- fix(cli): clear host rows and refresh destinations in ncl groups delete by @glifocat in #4110
- feat(skills): add /add-cursor with its own payload by @glifocat in #4107
- fix(interactive): stop waiting when a question card cannot be delivered by @glifocat in #4141
- fix(approvals): quote untrusted text in the remaining approval cards by @glifocat in #4136
- feat(setup): wait longer for the first reply and show its stages by @glifocat in #4108
- fix(codex): give gateway stand-ins the real ChatGPT workspace id by @glifocat in #4133
- feat(add-codex): ship the Codex runtime from the skill payload by @glifocat in #4104
- agent-images: list the v2026.10.0 hardened image by @amit-shafnir in #4149
- ci: open the agent-images.json PR for each promoted image, as the refresh App by @glifocat in #4010
- chore(release): v2026.10.1-rc.1 by @glifocat in #4158
- docs: provider code ships in skill payloads, not the providers branch by @glifocat in #4109
- ci: run the image refresh only in nanocoai/nanoclaw by @glifocat in #4157
- fix(cli): cascade dependent rows in ncl messaging-groups delete by @glifocat in #4103
- fix(agents): refuse a new agent whose group folder is invalid by @amit-shafnir in #4148
- fix(skills): clear messaging-group dependents in add-imessage removal by @glifocat in #4102
- fix(discord): Approve clicks recorded as reject (custom_id value suffix not stripped) by @carstenf in #4117
- fix(add-gchat): ask for the endpoint URL and project number by @glifocat in #4100
- fix(update-skills): attribute a barrel import to the skill that appends it by @witek in #3451
- agent-images: v2026.10.0 -> v2026.10.0-20261021T1608 by @nanoclaw-image-refresh[bot] in #4179
- fix(setup): accept Anthropic's newer API key types (sk-ant-usr, sk-ant-svc) by @glifocat in #4161
- refactor(add-opencode): drop the unreachable attachment file-part path by @glifocat in #4172
- fix(webhook): listen on 127.0.0.1 by default, add WEBHOOK_HOST by @glifocat in #4185
- fix(egress): apply lockdown to agents already running when it is turned on by @glifocat in #4160
- fix(container): add poppler-utils so Claude agents can read PDFs by @glifocat in #4174
- fix(host): stage attachments for message ids that contain '/' by @glifocat in #4170
- feat(add-onecli): OneCLI 1.45 grants; new groups get only their model credential by @glifocat in #4094
- fix(security): require Node's October 2026 security releases in setup and the agent image by @glifocat in #4183
- feat(add-dial-tool): scope Dial with OneCLI agent grants by @glifocat in #4095
- fix(add-dial-tool): one OneCLI project for the key and its grants; safe group names by @glifocat in #4189
- fix(onecli): don't pass secrets on the command line; redact failed-command errors by @glifocat in #4187
- chore(release): v2026.10.1-rc.2 by @glifocat in #4190
- chore(container): bump Bun to 1.4.4 for the eMudhra root removal by @glifocat in #4193
- ci: cut the PR gate from 7.5 to 2.5 minutes with sharded tests and a cached image by @zvi-fried in #4191
- ci: put the jobs added by #4191 on Bun 1.4.4 by @glifocat in #4208
- fix(add-onecli): delete the Dial key on upgrade only when the conversion could widen it by @glifocat in #4196
- fix(setup): print the device code beside the portal link by @amit-shafnir in #4224
- fix(setup): name the signed-in account and let setup switch it by @amit-shafnir in #4225
- agent-images: v2026.10.0 -> v2026.10.0-20261026T0306 by @nanoclaw-image-refresh[bot] in #4226
- fix(add-discord): ship the adapter patch so @mentions reach the bot by @topcoder1 in #4251
- agent-images: v2026.10.0 -> v2026.10.0-20261103T0454 by @nanoclaw-image-refresh[bot] in #4253
- test: give subprocess-spawning OneCLI detector test a 30s timeout by @stefancgillberg in #4022
- fix(delivery): strip the agent-group suffix from reaction/edit target ids by @antonio-antuan in #3970
- docs(contributing): match the PR body example to what #3646 shipped by @glifocat in #4145
- fix(cli): add the no-systemd restart hint, fix service names in CLAUDE.md by @glifocat in #4206
- fix(templates): restamp writes through pinned directories by @glifocat in #4194
- fix(setup): ask for the sudo password up front on Linux, and give WSL the right docker-group hint by @glifocat in #4200
- ci: add Dependabot for Actions, pnpm, bun, docker and skill pins; remove the inert Renovate config by @glifocat in #3978
- chore(deps): bump actions/create-github-app-token from 3.2.0 to 3.3.0 in the actions-minor-patch group by @dependabot[bot] in #4277
- chore(deps): bump pnpm/action-setup from 4.3.0 to 6.1.0 by @dependabot[bot] in #4278
- chore(deps): bump actions/setup-go from 5.6.0 to 7.0.0 by @dependabot[bot] in #4280
- chore(deps-dev): bump @eslint/js from 9.39.4 to 9.39.5 by @dependabot[bot] in #4285
- chore(deps): bump actions/setup-node from 4.4.0 to 7.1.0 by @dependabot[bot] in #4281
- chore(deps-dev): bump globals from 15.15.0 to 17.13.0 by @dependabot[bot] in #4283
- chore(deps-dev): bump vitest from 4.1.11 to 5.0.5 by @dependabot[bot] in #4286
- feat(send_card): fields, tables and charts in agent cards by @amit-shafnir in #4292
- fix(send_card): count a card's whole text as Teams receives it by @amit-shafnir in #4296
- fix(delivery): one stuck channel send no longer silences a session until restart by @glifocat in #4192
- fix(container): clear known fixable advisories from the agent image by @glifocat in #4270
- fix(setup): reach Docker from the user service when the docker group was just added by @glifocat in #4201
- feat(release): accept vX.Y.Z-beta.N pre-release tags by @glifocat in #4313
- chore(release): v2026.11.0-beta.1 by @glifocat in #4326
Full Changelog: v2026.10.0...v2026.11.0-beta.1