---
title: "Changelog"
description: "User-visible changes to oc-workers, grouped by area."
---

> Documentation Index
> Fetch the complete documentation index at: https://oc-workers.mdick85.workers.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

## 1.2.2

Fixes:

- A Control UI tab left open no longer keeps the install awake. After the idle close, the tab retries its connection and checks `/healthz` about every 15 s. Those requests reset the idle timer, so the install never slept. Now a tab that was idle-closed gets its requests answered without counting as activity and without waking the install. A health check from any tab is not activity either. Reload the tab to use it again.
- The owner console no longer reloads the whole page every 30 s (every 5 s while the state changes). It now updates the state card and the open tab in place, so the page does not flash, the scroll position stays, and a Setup form you are typing in is not cleared. It skips a refresh while the browser tab is hidden or a form has focus or edits. A login page or an error still causes one full reload.
- **Sleep now** in the owner console now sleeps the install even if you used it in the last minutes. Before, it refused with `3:idle` until the idle timer ran out, and opening the console counted as use. An open archive, an import or an unsent message still refuses it, with the reason.

## 1.2.1

Fixes:

- A full disk now shows. While alert `disk-full` is open (95 % used), `ochost status`, `ochost doctor` and the console say the install is degraded, with the reason. `disk-high` (80 %) is listed with the alerts only. Both close by themselves when the disk is back under 90 % and 80 %. `ochost status` shows the disk use.
- Soak engine: two waits for test installs, so leftover updates and a late creds copy no longer fail a run.

## 1.2.0

New:

- `ochost import <seed-dir>` brings an old OpenClaw install in. `--dry-run` prints the plan. Workspace and `memory/` merge into the workspace; the bootstrap files replace the new defaults (old copies in `.ochost-import/<id>/backup/`), other files the install already has are kept. Records, raw transcripts, media and skills without a target go to file storage (`history/INDEX.json` maps keys to the old names). Cron jobs are re-created. Config keys that OpenClaw 2026.10.9 has merge into a new version; the rest is listed. Credentials, `.env` files and keys never leave the laptop. Rules for one old install (vault paths, dirs for file storage, skills to park, cron jobs to skip or turn off) come from an optional local file, `--rules <file.json>`; `ochost import -h` shows the fields. With the sandbox on, the same merge runs in the sandbox workspace.
- The Setup tab of the owner console has controls for the sandbox (off, on, all), the alert channel (URL, **Save**, **Test**, **Off**) and the model. Each form is one POST and works with JavaScript off.
- New alert `no-reply`: a Telegram message accepted 5 minutes ago has no reply while the install runs. The Telegram row in the console and `ochost doctor` shows the count.
- `ochost sandbox on|off --apply` writes the setting, deploys, and restarts.
- Channel setup from the OpenClaw UI. Paste a bot token in Settings > Channels and save; the Setup tab then shows an Adopt button, and `ochost channels adopt <telegram|slack|discord|twilio>` does the same. The Worker moves the credentials out of the config, sets the webhook and restarts the gateway. Polling mode is refused.
- `testTimers` in `oc-host.jsonc` sets the timers of a test install. A real install ignores it.

Fixes:

- Data loss: a boot that does not use a valid clean marker now voids it. Before, a later crash boot from the same snapshot could restore SQLite from before the newest gen and lose rows.
- An inbox row that the gateway answers 404 or 501 goes dead after 5 misses and 5 minutes, with alert `inbox-dead`. Before, such rows held the install awake for up to 23 hours.
- `ochost restart` during a sleep no longer leaves the install stopped.
- `ochost restart` right after a deploy no longer asks for a second archive when the newest one finished less than 2 minutes ago.
- The self-test at the end of `ochost init` no longer warns on a healthy install.
- `ochost model list --refresh` reads every page of the model search.
- `sandbox on` sandboxes your Telegram DM too; only the Control UI chat stays on the gateway. The docs said the main chat was exempt.
- Sandboxed sessions keep the `file_store` tool. The agent skill names the search and `file_store` tools.
- The `firecrawl` package is not in the image. Run `ochost config render` on a config that still names it.
- Alert `archive-failed` closes when a later archive completes. The console cost guard line reads as a state, not a fault.
- Soak engine checks for test installs are fixed.

## 1.1.1

- One plugin card, "Cloudflare capabilities", for web search and web fetch through the gate, with the browser state in its status and Test. It replaces the "Cloudflare Web Search" card and the `firecrawl` entry. Run `ochost config render` on an older install.
- The `cfgw` provider lists the whole Workers AI chat catalogue, so you can pick a model in the Control UI or with `/model`. `ochost model list --refresh` updates the list.
- The owner console reads the config render version from the newest version that carries it, so a boot where OpenClaw's Doctor rewrote the config no longer shows "config render outdated".
- The file storage plugin card is named "Cloudflare R2 via oc-workers"; OpenClaw's own "Cloudflare" plugin stays off.
- The skill is `oc-workers-cloudflare`.
- `ochost restart` after a deploy waits up to 5 minutes for the pre-restart archive and gives up after 90 s without progress.
- `ochost destroy --delete-data` empties the bucket with an R2 job before it deletes it.
- The main model's thinking level is `agents.defaults.thinkingDefault` (the Control UI's Thinking row), set to `low` only when absent; utility and compaction keep a per-model `off`. The UI row is the one place to change it.

## 1.1.0 {#v1-1-0}

New:

- File storage on R2. The agent saves files to the storage location `r2` through the gate, with no credential in the container. Files are durable on write and outside snapshots and archives. New tool `file_store`, `ochost caps set storage <gb>`, a `file storage` row in doctor and the console, `ochost destroy --delete-data` purges them.
- Model roles. The main model thinks at `low`; titles, recaps and compaction run on `@cf/google/gemma-4-26b-a4b-it` with thinking off. The gate passes `reasoning_effort` to Workers AI. `ochost model` shows each role; `ochost model set --role utility|compaction <id>`; `model bench --role`; a deprecated model is refused. Run `ochost config render` on an older install.
- One-shot init. `ochost init` finishes the setup: Telegram and Cloudflare Access from flags or one question each on a fresh install; `--alerts ntfy|webhook`; `--sandbox on` goes in before the first deploy.
- `ochost sandbox on` sandboxes every session except your main chat (OpenClaw mode `non-main`); `on --all` sandboxes every session.

Fixes:

- Sandbox on: web search, web fetch, the browser, memory, media and the message tool work in sandboxed sessions. OpenClaw's sandbox tool policy left them out.
- Speech model is `@cf/deepgram/aura-2-en`; `@cf/myshell-ai/melotts` stops on 2026-11-15.
- `ochost channels add telegram` restarts a running gateway so the bot starts at once.
- `ochost auth access` waits for the Control DO before the restart, ends with a login link, and names the `--team` fix when the token cannot read the organization.
- Token files may be env files (`KEY=value`); `~` in a path expands; known files in `~/.config/oc-host/` are offered as defaults.
- Ops commands run the wrangler the package ships, never `npx`.
- `ochost init` refuses a Worker of the same name that is not an oc-host install.
- The bench shortlist drops two retired models and adds `glm-5.3` and `glm-4.7-flash`.

## 1.0.0

### Owner console

- The console has three tabs: Overview (cost, alerts summary, budgets, connected checks, backups), Alerts and log, and Setup. Tabs are links (`/?tab=`) and need no script. Buttons are only in Alerts and log and in Setup.
- The state card stays on top. One state button shows **Wake now**, **Sleep now**, **Start** or **Retry now**, by state.
- Setup has **Approve** for pairing requests, **Raise** for a budget near its cap, **Archive now** and **Restore drill**.
- `ochost doctor` reads `GET /ops/doctor`, the same JSON the console shows.
- Without a session, `/` shows the login form only.

### Install and CLI

- `ochost init` asks for no AI token. Model calls run on the Worker's Workers AI binding through the capability gate. `--ai-token-file` is an optional override.
- `init` prints one line per step and a summary block. `--json` output is complete, and WARN lines carry a fix.
- New `init --telegram-owner <id>`: your first direct message is approved without a code.
- New `init --fake-telegram` for a test install.
- New `ochost config render`. Older installs pick up new capability settings. `ochost deploy` runs it when the config render version is older.
- `ochost deploy` with a new image, then `ochost restart`, boots the new image. An archive runs first.
- `ochost destroy` deletes the sandbox app and its image tags.
- The image push retries on `connection reset` and `broken pipe`.
- The default model is DeepSeek V4.1 Flash on Workers AI through an AI Gateway. New `ochost model bench`.

### Channels

- New `ochost channels add slack|discord|twilio`. The Worker checks the signature, stores and acknowledges the event before the container is up.
- Slack and Twilio SMS messages reach the gateway. The image has the OpenClaw Slack and SMS plugins. Run `ochost deploy` on an older install.
- New `ochost inbox list` and `ochost inbox drop`. `channels remove --force` and `sleep now --force` drop messages that the gateway did not take.
- The `inbox-blocked` alert comes after 3 "route missing" answers.
- `channels add sms` and `channels remove sms` work as names for Twilio.
- Telegram cold replies show the typing indicator and a "Waking up" message while the install wakes (`telegram.wakeProgress`). `channels add telegram` turns on streamed replies.
- Pairing requests stay open 24 hours. Strangers and unlisted groups do not wake the install.
- Messages that arrive while the gateway restarts wait for it. After a crash, only recent messages are sent again.

### Capabilities and sandbox

- The capability gate serves browser, web fetch, web search, embeddings, speech, transcription and image calls, with daily budgets. New `ochost caps`.
- Web fetch uses the `firecrawl` plugin in the image. Web search uses the Cloudflare Web Search API.
- New tool sandbox, off by default: `ochost sandbox on|off|sleep`. New `exec` and `sandbox` budgets.

### Security and access

- A login link from `ochost open` opens a Continue button. A link preview cannot spend it.
- Login works in Firefox.
- New `ochost auth access --domain <host>`: Cloudflare Access on a custom domain.
- A daily `heartbeat` alert and a `deadman-silent` alert. `ochost doctor` checks the alert sink.
- The Worker answers with the waking page, not Error 1101, when the Runtime throws while the install sleeps or stops.

### Backups and upgrades

- Archives run on a schedule, with verification and restore. A test restore marks each replica generation `verified`.
- Archives are pruned after each archive and taken from a copy, not the live database.
- Credentials are copied to R2 and restored if the Control DO is rewound.
- Disk checkpoints survive crash loops. Sleep snapshots are smaller. OpenClaw's heartbeat no longer keeps waking an idle install.
- New `ochost upgrade check`, `run` and `rollback`, with a schema gate.
- After two failed Doctor boots on one image, the install raises one alert with the Doctor output tail.

### Sleep and wake

- The install sleeps when idle and wakes on a message or a timer.
- New `sleep.minAwakeMinutes`.

Source: https://oc-workers.mdick85.workers.dev/docs/changelog/index.mdx
