Release Candidate Changelog
[!NOTE] This is a release candidate. It is not intended for production use. Please test and report issues.
Purpose
This RC is intended to validate the Coder Agents feature. Coder Agents is currently in Early Access. The build was cut from our main branch and may include additional changes not listed in the changelog. Any other changes are not guaranteed to be stable or ready for general use.
Features (Agents)
Core
- Agent: Suffix-based chat agent selection — template authors name agents with -coderd-chat suffix (#23741, 73f6cd8) (@ibetitsmike)
- Agent: Structured error classification and retry hardening with chaterror/ package (#23275, 70f031d) (@ethanndickson)
- Agent: Respect provider Retry-After headers in chat retry loop (#23351, 4d74603) (@ethanndickson)
- Agent: Persist workspace agent binding across chat turns to eliminate per-turn resolution queries (#23274, 61e31ec) (@ethanndickson)
- Agent: Use DB liveness for chat workspace reuse instead of tailnet connectivity (#23551, c0a323a) (@ethanndickson)
- Agent: Event-driven stream acquisition, replacing 0–1000ms polling delay (#23745, 386b449) (@kylecarbs)
- Agent: Stop inline-resolving diff status on every GetChat call (#23901, 7861fcf) (@kylecarbs)
- Agent: Process-wide config cache for hot DB queries (~97–99% query reduction) (#23272, 15f2fa5) (@ethanndickson)
- Agent: Send Coder identity headers to upstream LLM providers (#23578, f14f58a) (@johnstcn)
- Agent: Separate default and additional system prompts with admin toggle (#23616, 4f063cd) (@ibetitsmike)
- Agent: Deployment-wide template allowlist for chats (#23262, 796872f) (@johnstcn)
- Agent: Wire the chat template allowlist into tools (#23626, 7a9d57c) (@johnstcn)
- Agent: Add chat-access site-wide role to gate chat creation (#23724, 3ce82bb) (@johnstcn)
- Agent: Add labels to chats with GIN-indexed JSONB (#23594, d4660d8) (@kylecarbs)
- Agent: Add last_injected_context column to chats table (#23798, a5cc579) (@kylecarbs)
- Agent: Enabled toggle on chat model admin panel (#23665, e937f89) (@ibetitsmike)
- Agent: Support xhigh reasoning effort for OpenAI models (#23545, 5f57465) (@ibetitsmike)
- Agent: Show agent badge on workspace list (#23453, d175e79) (@johnstcn)
- Agent: Rename user-facing "chats" to "Coder Agents" (#23905, 7198f90) (@johnstcn)
- Agent: Make agent context paths configurable via env vars (#23878, ee855f9) (@kylecarbs)
- Agent: Upgrade kylecarbs/fantasy LLM provider library (#23596, 398e2d3) (@hugodutka)
- Agent: Archive chat hard-interrupts active stream (#23758, bbf3fbc) (@ethanndickson)
- Agent: Guard title generation meta replies (#23708, 91217a9) (@ibetitsmike)
- Agent: Scope title regeneration per chat (#23729, bfeb91d) (@ibetitsmike)
- Agent: Forward local status events to fix delayed-startup banner (#23650, d678c6f) (@ethanndickson)
- Agent: Prevent chat hang when workspace agent is unavailable (#23707, c4ef94a) (@ethanndickson)
- Agent: Gate control subscriber to ignore stale pubsub notifications (#23865, a164d50) (@johnstcn)
- Agent: Populate all chat fields in pubsub events (#23664, bfee7e6) (@johnstcn)
- Agent: Make clarification rules coherent (#23625, 5c9b022) (@johnstcn)
- Agent: Save media message type to DB (#23427, 84740f4) (@hugodutka)
- Agent: Strip invisible Unicode from prompt content (#23525, ef2eb9f) (@johnstcn)
- Agent: Inline synthetic paste attachments as bounded prompt text (#23523, 4f571f8) (@ibetitsmike)
- Agent: Target specific chat in MarkStale instead of broadcasting (#23883, 19e44f4) (@kylecarbs)
- Agent: Unarchive child chats with parents (#23761, 5cba59a) (@ethanndickson)
- Agent: Prioritize context cancellation in WebSocket sendEvent (#23756, be99b3c) (@ethanndickson)
- Agent: Fast-retry PR discovery after git push (#23579, 40395c6) (@kylecarbs)
Agent Tools
- Agent: Skills discovery and tools for chatd (#23715, 8391658) (@kylecarbs)
- Agent: Persist skills as message parts like AGENTS.md (#23748, 4d2b0a2) (@kylecarbs)
- Agent: Persist chat instruction files as context-file message parts (#23592, d9fc5a5) (@kylecarbs)
- Agent: Workspace MCP tool discovery and proxying for chat (#23680, 0f86c42) (@kylecarbs)
- Agent: Add model_intent option to MCP server configs (#23717, d973a70) (@kylecarbs)
- Agent: Add MCP server config ID to tool-call message parts (#23522, dda9851) (@kylecarbs)
- Agent: Inherit MCP server IDs from parent chat when spawning subagents (#23571, 894fcec) (@kylecarbs)
- Agent: Handle EmbeddedResource and ResourceLink in MCP tool results (#23569, f784b23) (@kylecarbs)
- Agent: Prevent nil required field in MCP tool schemas for OpenAI (#23538, 3812b50) (@kylecarbs)
- Agent: Refresh expired MCP OAuth2 tokens everywhere (#23713, 50c0c89) (@kylecarbs)
- Agent: Use path-aware discovery for MCP OAuth2 metadata (RFC 9728, RFC 8414) (#23520, 1f13324) (@kylecarbs)
- Agent: Multi-file edit_files atomic in agent files (#23493, 798a667) (@mafredri)
- Agent: Manual chat title regeneration (#23633, 2312e5c) (@ibetitsmike)
Chat UX
- Agent: Pinned chats with drag-to-reorder (#23615, 113aaa7) (@mattvollmer)
- Agent: Chat read/unread indicator in sidebar (#23129, bcdc35e) (@kylecarbs)
- Agent: Add terminal panel to chat sidebar (#23231, 12f87ac) (@ThomasK33)
- Agent: Add copy message button to chat messages (#23850, 196dc51) (@mafredri)
- Agent: ArrowUp shortcut to edit last user message (#23705, 83b2f85) (@ethanndickson)
- Agent: Add plus menu to chat input toolbar (#23489, a25f929) (@DanielleMaywood)
- Agent: Model picker shows one option per config (#23533, 4025b58) (@ibetitsmike)
- Agent: Show friendly alert for missing agents-access role (#23831, 2a990ce) (@johnstcn)
- Agent: Show archived filter on agents page when chat list is empty (#23793, 348a3bd) (@ethanndickson)
- Agent: Persist file attachments across navigations on create form (#23609, 8576d1a) (@DanielleMaywood)
- Agent: Persist file-reference chips across chat navigation (#23854, c048a40) (@DanielleMaywood)
- Agent: Persist MCP server selection in localStorage (#23572, 6b10599) (@kylecarbs)
- Agent: Collapse MCP tool results by default (#23568, 07dbee6) (@kylecarbs)
- Agent: Use imperative setValue for chat message editing (#23799, ddafdbc) (@ethanndickson)
- Agent: Confirm active agent archive (#23887, 153a66b) (@ethanndickson)
- Agent: Optimistic pinned reorder and post-drag click suppression (#23704, 9e33035) (@mattvollmer)
- Agent: Use chat ID as terminal reconnection token (#23926, b1c42bb) (@johnstcn)
- Agent: Harden Agents embed frame communication and add theme sync (#23574, 249ef7c) (@EhabY)
- Agent: Add Kyleosophy alternative completion chimes (#23891, bec426b) (@johnstcn)
- Agent: Match workspace picker font size to plus menu dropdown (#23670, 00cd7b7) (@DanielleMaywood)
- Agent: Fix agents sidebar not loading all pages when sentinel stays visible (#23613, 110af9e) (@DanielleMaywood)
Streaming & Rendering
- Agent: Streaming-mode Streamdown for live chat output (#23676, 5c7057a) (@DanielleMaywood)
- Agent: Structured error/retry UX for agent chat (#23282, 196c610) (@ethanndickson)
- Agent: Refine chat retry status UX (#23651, 21c2aca) (@ethanndickson)
- Agent: Clear retry banner on stream forward progress (#23653, ad3d934) (@ethanndickson)
- Agent: Preserve streaming output when queued message is sent (#23595, 61d2a4a) (@kylecarbs)
- Agent: Update sticky messages during streaming (#23577, 4ba9986) (@kylecarbs)
- Agent: Write WebSocket messages to React Query cache (#23618, 3f8e300) (@DanielleMaywood)
- Agent: Cancel stale refetches before WebSocket cache writes (#23582, 7eca33c) (@mafredri)
- Agent: Clear stream state atomically with durable message commit (#23924, e3c59c0) (@DanielleMaywood)
- Agent: Prevent WebSocket events from cancelling sidebar pagination fetches (#23845, dee5ec5) (@DanielleMaywood)
- Agent: Show Thinking indicator immediately after sending a message (#23904, 2ea89e1) (@kylecarbs)
- Agent: Ensure Thinking indicator appears regardless of WebSocket event ordering (#23884, 4b52656) (@kylecarbs)
- Agent: Fix "Thinking..." indicator disappearing prematurely (#23933, 7c048d8) (@kylecarbs)
Tool Rendering
- Agent: Rich preview for spawn_computer_use_agent tool (#23684, f87d6e6) (@hugodutka)
- Agent: Refactor the wait for computer use subagent card (#23780, 509e89d) (@hugodutka)
- Agent: Humanize process_signal and show killed on processes (#23590, f2845f6) (@mafredri)
- Agent: Make long execute tool commands expandable (#23562, 17aea0b) (@ethanndickson)
- Agent: Add tool rendering for read_skill, read_skill_file, start_workspace (#23744, a708e9d) (@kylecarbs)
- Agent: Soften tool failure display and improve subagent timeout UX (#23617, c0f9358) (@kylecarbs)
- Agent: Fix exec tool layout shift on command expand (#23739, 565cf84) (@DanielleMaywood)
- Agent: Collapse chat toolbar badges fluidly on overflow (#23663, d18e700) (@DanielleMaywood)
- Agent: Fix copy button toolbar regression (#23912, ba734f8) (@mafredri)
- Agent: Display loaded context files and skills in context indicator tooltip (#23853, 2953245) (@kylecarbs)
- Agent: Hover popover for context indicator with nested skill tooltips (#23870, 2c5e003) (@kylecarbs)
- Agent: Compact context compaction rows in behavior settings (#23543, 4a0d707) (@DanielleMaywood)
- Desktop / Computer Use
- Agent: Enable copy and paste in agents desktop (#23686, 1b2fab8) (@hugodutka)
- Agent: Delay desktop VNC connection until tab is selected (#23861, e8fb418) (@DanielleMaywood)
- Agent: Fix desktop visibility glitch (#23678, 081d919) (@hugodutka)
- Agent: Use lightbox for computer tool screenshots in PWA mode (#23529, a8757d6) (@DanielleMaywood)
- Agent: Move agentdesktop under x/ subpackage (#23610, c753a62) (@johnstcn)
Scroll & Layout
- Agent: Replace ScrollAnchoredContainer with useStickToBottom (#23846, faa5db0) (@DanielleMaywood)
- Agent: Normalize transcript scrolling to top-to-bottom flow (#23576, cf955b0) (@ibetitsmike)
- Agent: Fix scroll-to-bottom pin starvation (#23778, 378f11d) (@mafredri)
- Agent: Prevent scroll handler from killing autoScroll during pin convergence (#23818, 3950947) (@mafredri)
- Agent: Unify scroll restore-guard lifecycle in ScrollAnchoredContainer (#23809, d2c308e) (@mafredri)
- Agent: Prevent mobile scroll jump during active touch gestures (#23734, 73bde99) (@ibetitsmike)
- Agent: Fix right panel layout issues at responsive breakpoints (#23573, 8791328) (@DanielleMaywood)
- Agent: Preserve right panel tab state across switches (#23737, 399080e) (@DanielleMaywood)
- Agent: Restore mobile back button on agent settings pages (#23752, 588beb0) (@DanielleMaywood)
- Agent: Use Popover for context indicator on mobile viewports (#23747, a2799560) (@kylecarbs)
- Agent: Fix sticky user message clipping and fade-in behavior (#23928, 7dc81bd) (@kylecarbs)
- Agent: Fire chat-ready after store sync so scroll-to-bottom hits rendered DOM (#23693, 97a27d3) (@EhabY)
- Frontend Performance
- Agent: Memoize chat rendering hot path (#23720, 4ed9094) (@kylecarbs)
- Agent: Memo-wrap SmoothedResponse and ReasoningDisclosure (#23674, cc4cca9) (@mafredri)
- Agent: Narrow buildStreamTools compiler cache guard dependencies (#23677, 0234e8f) (@mafredri)
- Agent: Fix compiler memoization gap in AgentDetailInput (#23683, 94e5de2) (@mafredri)
- Agent: Move useSpeechRecognition into compiled path (#23689, f3a8096) (@mafredri)
- Agent: Convert renderBlockList to BlockList component (#23673, 6dee7cf) (@DanielleMaywood)
- Agent: Lazy iteration in sliceAtGraphemeBoundary (#23671, b23c07c) (@mafredri)
- Agent: Add Profiler instrumentation for agents chat (#23355, 7f1e6d0) (@mafredri)
- Agent: Enable React profiling build for dogfood (#23354, e463adf) (@mafredri)
UI Polish
- Agent: Use Anthropic icon instead of Claude icon for provider (#23661, a521539) (@matifali)
- Agent: Replace inline delete confirmations with modals (#23710, 60065f6) (@DanielleMaywood)
- Agent: Reduce dropdown menu font size on agents page (#23711, 808dd6e) (@DanielleMaywood)
- Agent: Remove bold font-weight from unread chats in sidebar (#23725, 6b77fa7) (@kylecarbs)
- Agent: Center X icon in agent chat chip close buttons (#23580, 82f9a4c) (@DanielleMaywood)
- Agent: Remove rounded-full override from agent sidebar avatar (#23570, ae9174d) (@DanielleMaywood)
- Agent: Fix DiffViewer rename header layout (#23540, 01aa149) (@DanielleMaywood)
- Agent: Prevent phantom scrollbar on empty agent settings textareas (#23530, 367b5af) (@DanielleMaywood)
- Agent: Align models table style with providers table (#23531, 4bc79d7) (@DanielleMaywood)
- Agent: Adjust Admin badge padding on agents settings page (#23534, 2fe5d12) (@DanielleMaywood)
- Agent: Modernize DurationField for agent settings (#23532, 4f3c7c8) (@DanielleMaywood)
- Agent: Match text and image attachment heights in conversation timeline (#23593, fdc9b3a) (@kylecarbs)
- Agent: Fix file reference chip text from overflowing (#23546, bac45ad) (@DanielleMaywood)
- Agent: Prevent spurious startup warning during pending status (#23805, 953c3bd) (@kylecarbs)
- Agent: Show Agents tab on dev builds without page refresh (#23512, 5a03ec3) (@DanielleMaywood)
- Agent: Replace model catalog loading text with skeleton (#23583, 44baac0) (@kylecarbs)
- Agent: Resolve localhost URLs in markdown with correct port and protocol (#23513, 3495cad) (@kylecarbs)
- Agent: Toast when git refresh fails due to disconnection (#23779, 4c97b63) (@DanielleMaywood)
- Agent: Align plus menu icons and add small switch variant (#23769, 7a5fd4c) (@DanielleMaywood)
- Agent: Guard per-chat cancelQueries to prevent 'Chat not found' race (#23714, 0ec0f8f) (@DanielleMaywood)
Infrastructure
- Agent: Tunneler FSM and partial implementation (#23691, 9b4d15d) (@spikecurtis)
- Agent: Support agent updates in tunneler (#23730, ef3aade) (@spikecurtis)
- Agent: Move docker-chat-sandbox under templates/x/ (#23777, cf500b9) (@johnstcn)
- Documentation
- Agent: Add extending-agents, mcp-servers, and usage-insights docs pages (#23810, ca879ff) (@mattvollmer)
- Agent: Update Chats API and platform controls docs (#23803, 8e57498) (@mattvollmer)
- Agent: Fix tool tables and model option errors in agent docs (#23821, 5e3bccd) (@mattvollmer)
- Testing & Stability
- Agent: Remove flaky OpenAI round-trip tests (#23877, e2bbd12) (@ibetitsmike)
- Agent: Stabilize flaky chatd subscribe/promote queued tests (#23816, b3d5b8d) (@kylecarbs)
- Agent: Stabilize flaky request-count assertion in round-trip test (#23843, af678606) (@ibetitsmike)
- Agent: Avoid zero-ttl config cache flake (#23762, 54738e9) (@ethanndickson)
- Agent: Harden chatd relay test setup (#23759, 13dfc9a) (@ethanndickson)
- Agent: Add coverage for awaitSubagentCompletion (#23527, 9dc2e18) (@mafredri)
- Agent: Use *_TEST_API_KEY env vars in integration tests (#23567, 3220d1d) (@dannykopping)
- Agent: Fix AgentDetailView storybook tests hanging indefinitely (#23544, 6a04e76) (@DanielleMaywood)
- Agent: Stabilize date-dependent storybook snapshots (#23657, 87aafda) (@ethanndickson)
- Agent: Remove racy ChatStatusPending assertions after CreateChat (#23882, d6df78c) (@johnstcn)
Compare: v2.32.0-rc.0...v2.33.0-rc.0
Container image
docker pull ghcr.io/coder/coder:2.33.0-rc.0
Install/upgrade
Refer to our docs to install or upgrade Coder, or use a release asset below.