## v1.3.3-beta.5 — 2026-06-15

74 PRs from 28 contributors. Big batch: new agents (Antigravity, GitHub Copilot), QQ / WeCom file
attachments, Feishu audio+video media, `/timer` and `/cancel` commands, agent-driven TTS, plus broad
platform fixes across Telegram, Discord, DingTalk, Feishu, WeCom, WeiXin, Cursor, OpenCode, Pi, and Codex.

### New Features

- **Google Antigravity (`agy`) agent**: first-class integration of Google's Antigravity CLI (#1123)
- **GitHub Copilot agent**: first-class integration of `copilot` CLI (#865)
- **`/timer` command**: one-shot delayed task system (#1012)
- **`/cancel` command**: interrupt and reset current session (#957)
- **Session prune command**: remove duplicate sessions across projects (#603)
- **Agent-driven TTS send**: agents can emit TTS audio output (#1230)
- **Reply to unauthorized IM senders**: optional acknowledgement to non-allowlisted users (#1190)
- **Configurable shell + shell profile** for `exec` (#870)
- **CLI `cron add --silent`**: suppress cron start notification (#1285, closes #858)
- **Daemon EnvDiscoverer plugin hook + hardened service-file env capture** (#1034)
- **QQ Bot inline keyboards + INTERACTION_CREATE** events — permission requests render as clickable buttons (#1131)
- **QQ (OneBot): file send & receive** via HTTP API (#323)
- **WeCom `SendFile`** in WebSocket mode (#1199)
- **Feishu audio + video attachments** as native media (#1202)
- **Feishu rich card rendering + panel handling refresh** (#1204)
- **DingTalk reaction emoji** support (#1213)
- **DingTalk @mention via `send --at-users` / `--at-all`** (#1188)
- **Slack + tmux per-thread session scope** with per-session tmux windows (#1179)
- **Cron manual-trigger alignment with `exec`** (#1201)
- **Codex `request_user_input` app-server events** (#1200)
- **Codex relay group visibility** configuration (#1209)
- **Claude Code custom `append_system_prompt`** option (#1175)
- **Claude Code PermissionRequest hooks** respected (#850)
- **Pi `ContextUsageReporter`**: token stats in reply footer (#1235)
- **Send `--audio` / `--video`** routes to dedicated AudioSender / VideoSender paths (#1359)

### Fixed

#### Engine / Core
- **Permission keyword matching tolerates leading/trailing @mention** (#1358)
- **Validate session ID belongs to project before resume** (#1276, closes #599)
- **`/stop` preserves AgentSessionID** so the next message resumes the session (#1196)
- **Drop stale platform permission callbacks** instead of forwarding to agent (#1280, closes #826)
- **Route relay through multi-workspace bindings** (#328)
- **Use `interactiveKey` consistently in `executeCardAction`** for multi-workspace mode (#141)
- **Honor `CC_LOG_MAX_SIZE` env var** at log rotation (#1243)
- **Handle `reset_on_idle_mins` correctly** in v1.3.3-beta.4 follow-up (#1238)

#### Agents
- **Codex**: `-c sandbox_mode` override on exec resume — fixes silent resume failure (#1360)
- **Codex**: align suggest mode with description; replace deprecated `--full-auto` (#1351)
- **Claude Code**: preserve active provider across session resume (#1356)
- **Claude Code**: encode `.` and `@` in project key to match Claude Code behavior (#1055)
- **Cursor**: implement `interaction_query` permission flow for default mode (#1252, closes #785)
- **Cursor**: discover CLI chat storage and show readable session titles (#1232)
- **Cursor**: discover skills under native `.cursor/skills` layout (#885)
- **OpenCode**: surface tool rejection error as text to prevent empty response (#1247)
- **OpenCode**: eliminate TempDir cleanup race in `TestAvailableModels` under `-cover` (#1254)
- **ACP**: improve vendor compatibility for session/update parsing (#434)
- **Agent runner**: skip bypass-permissions flags when running as root (#1056)
- **Pi**: add `SetWorkDir` to enable `/dir` command (#1177)
- **Pi**: read `enabledModels` from `settings.json` for `/model` (#1178)
- **Pi**: pipe prompt via stdin to avoid CLI option parsing (#1185)
- **Pi**: correct agent directory paths — `SkillDirs` + `GlobalMemoryFile` (#1206)

#### Platforms
- **Telegram, Discord**: default `progress_style` to compact for streaming edits (#1354)
- **Telegram**: handle "message too long" errors from HTML table expansion (#873)
- **Telegram**: drain pending updates before polling to prevent 409 Conflict (#425)
- **Discord**: platform recovery loop so transient gateway errors don't permanently break startup (#1355)
- **DingTalk**: handle `msgtype=file` inbound — route to FileAttachment (#1357, closes #981 file half)
- **DingTalk**: `extractAtUserIds` regex now matches 4+ digit user IDs (#1237)
- **DingTalk**: use `senderStaffId` for private chat card `spaceId` (#1145)
- **Feishu**: forward link href and card button URLs to agent (#1154)
- **Feishu**: drop stale redelivered user messages by `create_time` watermark (#1168)
- **WeCom**: split long messages at semantic boundaries instead of mid-word (#963)
- **WeCom**: strip multi-token @-mentions before slash commands (#1225)
- **WeiXin**: start `pollLoop` after ilink ready signal (#1242)

#### Other
- **Update**: try archive format first when downloading updates (#444)
- **Windows**: implement instance lock using `CreateFile` exclusive mode (#1160)
- **Misc**: P1/P2 fixes batch from post-merge QA review (#1246)

### ⚠️ Behavior Notes

- **`progress_style` default** for Telegram and Discord is now `compact` (was `legacy`). Streaming
  edits look cleaner out of the box. Set `progress_style = "legacy"` in `[[projects.platforms]]`
  to restore the old behavior. (#1354)
- **DingTalk `msgtype=file`** inbound messages now reach the agent. Previously silently dropped.
  If you relied on this drop, you'll start receiving the file payloads. (#1357)
- **Engine permission keyword matching** is now @mention-tolerant. Commands like `@Bot/permit`
  now match the same as `/permit`. (#1358)

### Docs

- **FAQ**: OpenClaw via ACP, WeChat group `chat_id`, Telegram proxy (#1284, closes #501/#805/#245)
- **Community tools page** (#1137)
- **Sponsors**: add runapi.co (#1277)
- **Prompt**: clarify cron edit workflow (#1126)
- **Telegram proxy config** (#389)
- **`admin_from` placement** for privileged commands (#393)

### Build / CI

- Upgrade `golangci-lint` to v2.11.4 for Go 1.25 support
- Add `go mod verify` step in CI
- Fix `go.sum` hash for `BurntSushi/toml v1.6.0`
- Update MiniMax model to M3 in provider presets
- Maintenance path improvements (#1142)

### Contributors

Thanks to all 28 contributors in this release:

- **@chenhg5** — release lead, ~31 PRs across engine, agents, platforms, and tests
- **@happyTonakai** — 8 PRs: pi agent (`/dir`, `/model`, paths, stdin), `/timer`, configurable shell, Claude Code hooks (#850, #870, #1012, #1177, #1178, #1185, #1206, #1235)
- **@AaronZ345** — 6 PRs: agent-driven TTS, Feishu media + rich cards, codex request_user_input, relay visibility, cron alignment (#1200, #1201, #1202, #1204, #1209, #1230)
- **@kagura-agent** — 2 PRs: claudecode project key + agent root bypass (#1055, #1056)
- **@kevinWangSheng** — 2 PRs: cursor skills layout, interactiveKey consistency (#141, #885)
- **@realraelrr** — 2 PRs: WeCom long-message split, reply to unauthorized senders (#963, #1190)
- **@wgx521** — 2 PRs: DingTalk @mention CLI + 4-digit user ID regex (#1188, #1237)
- **@7a3lv7** — QQ Bot inline keyboards (#1131)
- **@GLY2024** — QQ file send/receive (#323)
- **@JazzuLu** — Google Antigravity agent (#1123)
- **@JupiterTheWarlock** — cron edit prompt docs (#1126)
- **@MASAKASUNO1** — Slack/tmux per-thread sessions (#1179)
- **@MMMarcinho** — DingTalk reaction emoji (#1213)
- **@Marvae** — GitHub Copilot agent (#865)
- **@STAR-REIN** — community tools docs (#1137)
- **@bingkxu** — Windows CreateFile instance lock (#1160)
- **@dcstrange** — WeCom WebSocket SendFile (#1199)
- **@otjdiepluong** — maintenance path improvements (#1142)
- **@re-f** — Cursor readable session titles (#1232)
- **@shellus** — core `/stop` preserves AgentSessionID (#1196)
- **@shenyingjun5** — Feishu stale redelivered message filter (#1168)
- **@skkka-2** — WeCom multi-token @mention strip (#1225)
- **@sonhineboy** — DingTalk private chat streaming (#1145)
- **@soonwang** — Claude Code custom append_system_prompt (#1175)
- **@ssc806** — daemon env capture + EnvDiscoverer (#1034)
- **@xukp20** — admin_from docs (#393)
- **@xxb** — multi-workspace relay routing (#328)
- **@yzlu0917** — Telegram proxy docs (#389)

### Breaking Changes

- None.

### Upgrade

```bash
# npm (beta channel)
npm install -g cc-connect@beta

# or with existing install
cc-connect update
```

**Full Changelog**: https://github.com/chenhg5/cc-connect/compare/v1.3.3-beta.4...v1.3.3-beta.5
