mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-24 18:19:05 +02:00
docs(release): stable notes for the 2026.1023.0-beta.0 soak (v2026.1026.0, since v2026.1023.0) (#17388)
## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work > - The release process promotes a soaked beta to stable. The stable GitHub Release body comes from `releases/beta/v<beta-version>.md` on `master` > - The `draft_stable_notes` job pushed a commit-log skeleton to this branch when `2026.1023.0-beta.0` published (workflow run 40013393296) > - The skeleton is grouped commit subjects. It is not in release-notes voice and it does not tell a self-hoster what to do before an upgrade > - Stable `v2026.1023.0` was published from `2026.1012.1-beta.0` while this draft was open, so the previous stable is now `v2026.1023.0`, not `v2026.1012.0`. The notes must describe only what changed after it > - This pull request replaces the skeleton with curated notes. Each claim traces to a pull request in `v2026.1023.0..d69631b0` > - The benefit is that the earliest stable promotion (v2026.1026.0) finds finished notes on `master` on time, and readers of the `v2026.1023.0` changelog are not told about the same features twice ## Linked Issues or Issue Description **Issue type** Missing content **Where is the issue?** `releases/beta/v2026.1023.0-beta.0.md` is the stable-notes file for the `2026.1023.0-beta.0` soak. It exists only on this machine-owned branch and only as the auto-generated skeleton. **What's wrong?** The stable promotion reads this file from `master` and publishes it as the GitHub Release body. Until this branch merges, the stable preflight has no notes to resolve. The skeleton lists 715 raw commit subjects with nested PR summaries, 200 of which already shipped in `v2026.1023.0`. It does not call out the changes that need operator attention before the upgrade. **Suggested fix** Merge the curated notes so the notes invariant holds for the v2026.1026.0 promotion. Correct the `> Released:` date in a follow-up if the promotion date slips. ## What Changed - Replaced the skeleton in `releases/beta/v2026.1023.0-beta.0.md` with curated stable notes for v2026.1026.0 in the same layout as `releases/v2026.1023.0.md`: overview, Breaking Changes, Highlights, Fixes, Improvements, Upgrade Guide, Contributors - The notes are delta-framed against `releases/v2026.1023.0.md`. Features that stable already describes (private tasks, model gateways, Slack self-setup, the two-screen GitHub review bot, the Costs ledger, MCP assistant edits, the Operator preset change, OpenAI Dot, the primary agent, decision models, agent identity keys) are not repeated. Bullets that mixed shipped and new work were split so only the new work remains - Breaking Changes lists the removal of the Pipelines experiment (#16834), Sentry run-failure reporting off by default (#16300), the bounded run history list (#16286), and the `--yes` flag on `instructions-file:delete` (#11504) - Highlights cover the Paperclip Runner as the default for new agents, GitHub Copilot as a native harness, project repositories as skill sources, prompt injection prevention, OTLP observability, the unified Google Workspace connection, self-cleaning workspaces with restore points, bulk roster edits, Grok Bot and Muse, Speko, and the Slack, GitHub bot, Apps catalog, and Audit commentary follow-ups - Upgrade Guide enumerates migrations `0334` through `0374` with one-phrase effects, including the constraint rewrites in `0340` and `0361` and the index in `0360`, the new environment variables with defaults, the new default-off experimental settings, the `commentary:view` grant and its startup re-seeding, the Docker image entrypoint change, and the API changes - Release and CI internals, smoke specs, canary tooling, Paperclip Cloud work, dependency bumps, and test-only changes are left out ## Verification - Beta publish is complete: npm dist-tag `beta` is `2026.1023.0-beta.0`, tag `beta/v2026.1023.0-beta.0` points at `d69631b01b9c658f80bf8bed389863dce82643e1`, and the `publish_beta`, `smoke_beta`, and `draft_stable_notes` jobs in run 40013393296 all succeeded - Stable `v2026.1023.0` (tag at `1b4c803816e82b0265c8422e1a804327a7ed8c54`, the `2026.1012.1-beta.0` source commit) is an ancestor of `d69631b0`; `git rev-list --count v2026.1023.0..d69631b01b9c658f80bf8bed389863dce82643e1` returns 515, which matches the overview and Contributors section - Contributors are the 26 unique GitHub logins of the commit authors in the range, read from the GitHub compare API with `[bot]` accounts excluded. The 21 external handles are thanked by name - `./scripts/release.sh stable --date 2026-10-26 --print-version` returns `2026.1026.0` - Every `#NNNN` link in the file was checked: none is a commit subject in `v2026.1012.0..v2026.1023.0`, and each is either a squash-merge subject in `v2026.1023.0..d69631b0` or a pull request whose `merge_commit_sha` lies in that range (#14180, #16356, #16401, #16403, #16976) - Migration numbers, setting keys, env var names, defaults, and harness pins were checked in the code at the source commit and at `v2026.1023.0`, not in commit subjects - The file contains no internal ticket ids or instance-local links - The compare view for this branch shows one changed file and no source changes ## Risks - Low risk: a single markdown file, no source changes. If the promotion date slips past 2026-10-26, the `> Released:` line and H1 need a one-line update before the stable dispatch. The beta-keyed filename makes that re-date harmless - The notes assume the next stable is promoted from this beta. If a later beta is promoted instead, its own notes file supersedes this one ## Model Used - Claude (Anthropic), model ID `claude-fable-5-1` (Claude Fable 5.1), extended thinking enabled, tool use via Claude Code ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [ ] All Paperclip CI gates are green - [ ] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: devinfoley <139239+devinfoley@users.noreply.github.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Bender (Fable) <bender-fable@users.noreply.github.com>
This commit is contained in:
1 file changed
+74
@@ -0,0 +1,74 @@
|
||||
# Paperclip v2026.1026.0
|
||||
|
||||
> Released: 2026-10-26
|
||||
|
||||
Paperclip v2026.1026.0 carries 515 commits, promoted from `2026.1023.0-beta.0`. The headline is that the Paperclip Runner is now the default for new agents: new Claude, Codex, OpenCode, and Pi agents start on the native Runner on qualified macOS and Linux hosts, existing agents get a one-click "Upgrade runner" action, and GitHub Copilot joins as a native harness. Around that: project repositories that automatically become skill sources, model-backed prompt injection prevention, agent observability to Braintrust or any OTLP endpoint, a unified Google Workspace connection, bulk edits on the Agents roster, workspaces that compact and expire themselves with encrypted restore points, and Grok Bot and Muse as experimental Runner providers. Underneath, server restarts report ready sooner, the Docker image boots from a precompiled bundle, task pages load faster, and more background services stop polling the database.
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
- **The Pipelines experiment is removed.** Pipeline boards, stage settings, case automation, review queues, the `pipelines` CLI commands, the `pipelines:write` permission, the `enablePipelines` setting, and the `linkedCases` field on task detail are gone; Cases and Routines remain. Existing pipeline tables and records are preserved untouched and a stored `enablePipelines` value is ignored. ([#16834](https://github.com/paperclipai/paperclip/pull/16834))
|
||||
- **Run failures no longer reach Sentry by default.** A backend DSN alone no longer reports agent run failures. Set `PAPERCLIP_SENTRY_RUN_FAILURES=unexpected` to keep the previous filtered policy or `all` to report every failed or timed-out run; the default is `off`. ([#16300](https://github.com/paperclipai/paperclip/pull/16300))
|
||||
- **The run history list is bounded.** `GET /api/companies/{companyId}/heartbeat-runs` returns 200 rows by default and at most 1,000; clients that relied on an unbounded array must pass an explicit `limit`. ([#16286](https://github.com/paperclipai/paperclip/pull/16286))
|
||||
- **`paperclipai agent instructions-file:delete` requires `--yes`** like the other destructive CLI commands; scripts that call it must add the flag. ([#11504](https://github.com/paperclipai/paperclip/pull/11504))
|
||||
|
||||
## Highlights
|
||||
|
||||
- **The Paperclip Runner is the default** — New Claude agents on Apple Silicon, Intel macOS, and Linux x64 ([#15993](https://github.com/paperclipai/paperclip/pull/15993), [#15997](https://github.com/paperclipai/paperclip/pull/15997)), new Codex agents on Apple Silicon, Intel macOS, Linux x64, and Linux ARM64 ([#15683](https://github.com/paperclipai/paperclip/pull/15683)), and new OpenCode and Pi agents on macOS and Linux x64 ([#17120](https://github.com/paperclipai/paperclip/pull/17120), [#17142](https://github.com/paperclipai/paperclip/pull/17142)) now start on the native Runner instead of the legacy adapter, across onboarding, the API and CLI, hires, built-ins, plugins, and imports; Linux needs GNU libc 2.39 or later, a "Legacy runner" override lives under Advanced, and existing agents keep their current runner. Existing Claude and Codex agents on qualified targets show an **Upgrade runner** action that converts them in one click, keeping model, account, and instructions and listing any settings that could not be converted ([#17122](https://github.com/paperclipai/paperclip/pull/17122)). Claude Runner agents start with their core task tools preloaded, measured about 20% faster on simple tasks ([#16885](https://github.com/paperclipai/paperclip/pull/16885)), carry the chosen effort level through resumes ([#15994](https://github.com/paperclipai/paperclip/pull/15994)), and start on Linux ARM64 ([#16372](https://github.com/paperclipai/paperclip/pull/16372)).
|
||||
- **GitHub Copilot as a native harness** — Connect GitHub Copilot through Apps / AI Connections with a saved GitHub token; the agent's model list is discovered from the authenticated account, and Copilot (CLI 1.0.88) runs through the Paperclip Runner with the same instruction, permission, and completion boundaries as the other native providers, including the Linux provider manifest needed for Daytona sandboxes ([#15705](https://github.com/paperclipai/paperclip/pull/15705), [#15701](https://github.com/paperclipai/paperclip/pull/15701), [#15706](https://github.com/paperclipai/paperclip/pull/15706)).
|
||||
- **Project repositories become skill sources** — GitHub repositories attached to a new project are imported as skill sources automatically: Paperclip imports their skills, re-checks the configured branch every five minutes with the setup person's GitHub connection, and installs new skills unless excluded; existing projects get an "adopt repositories" action in Skills → Sources, automatic updates can be paused, project-derived skills inherit project access, and each run pins the skill versions it started with ([#16066](https://github.com/paperclipai/paperclip/pull/16066)). Imports keep the whole repository snapshot at the scanned commit so skills that depend on shared scripts or sibling skills work after delivery, list every skill with its folder, and skip unsupported or oversized files with a warning instead of failing ([#15731](https://github.com/paperclipai/paperclip/pull/15731), [#16308](https://github.com/paperclipai/paperclip/pull/16308)). Sources gain a branch picker that loads the repository's branches, marks the default, and validates the ref before saving ([#16288](https://github.com/paperclipai/paperclip/pull/16288)); a source whose tracked branch disappeared shows a branch repair action ([#16256](https://github.com/paperclipai/paperclip/pull/16256)); each saved source is listed once with grouped refresh errors ([#16310](https://github.com/paperclipai/paperclip/pull/16310)); and disconnecting a source really removes it, with a keep-or-delete choice for the imported skills ([#16150](https://github.com/paperclipai/paperclip/pull/16150)).
|
||||
- **Model-backed prompt injection prevention** — Settings → Connections lets a connection manager pick a shared OpenRouter connection and model (default `openai/gpt-oss-safeguard-20b`) to classify tool results before they reach an agent, replacing the regex verdict and allowing benign code that merely looks like an attack; costs appear in Costs, and a "Test model checks" action verifies two fixed samples. Off until configured. ([#16976](https://github.com/paperclipai/paperclip/pull/16976))
|
||||
- **Agent observability to your own backend** — Company Settings → General → Agent observability sends native Codex and Claude Code logs and traces to Braintrust (US) or a custom OTLP HTTP endpoint, with credentials held in company secrets and a test action; off by default ([#16874](https://github.com/paperclipai/paperclip/pull/16874)). Braintrust also joins the Apps catalog with US and EU sign-in or API-key methods ([#17141](https://github.com/paperclipai/paperclip/pull/17141)).
|
||||
- **A unified Google Workspace connection** — One Google Workspace entry replaces the separate Google service setups: pick Gmail, Drive (Docs, Sheets, Slides), and Calendar, each optionally read-only, and consent and tool access are bound to that selection; existing Google connections keep working ([#15545](https://github.com/paperclipai/paperclip/pull/15545)). Gmail gains an opt-in archive capability ([#16331](https://github.com/paperclipai/paperclip/pull/16331)).
|
||||
- **Workspaces that clean up after themselves** — One hour after a task tree finishes, the terminal-workspace reaper removes regenerable directories such as `node_modules`, `dist`, and `target` that the repository's own `.gitignore` ignores, keeping the branch and all source changes; the archive cooldown drops from 7 days to 1 ([#16304](https://github.com/paperclipai/paperclip/pull/16304)). Opt-in Git cache expiration removes finished Paperclip-owned worktrees and private base clones 24 hours after the task tree is done and restores them at the exact commit when a task reopens ([#16457](https://github.com/paperclipai/paperclip/pull/16457), [#16691](https://github.com/paperclipai/paperclip/pull/16691)); with restore points on, closed worktrees that still hold unpushed commits or uncommitted files are saved to an encrypted restore point first and restored exactly when work resumes, idle open issues are parked the same way after seven days, nested multi-repository checkouts get their own restore points, and a task whose restore point has expired reopens on a fresh workspace with a note instead of failing ([#17248](https://github.com/paperclipai/paperclip/pull/17248), [#17271](https://github.com/paperclipai/paperclip/pull/17271), [#17257](https://github.com/paperclipai/paperclip/pull/17257), [#17269](https://github.com/paperclipai/paperclip/pull/17269)). Unused materialized skill versions are removed hourly and rebuilt on demand ([#16433](https://github.com/paperclipai/paperclip/pull/16433)), and host-side failover backups of remote-sandbox sessions expire a week after their issues close ([#16866](https://github.com/paperclipai/paperclip/pull/16866)).
|
||||
- **Tasks with their own workspace** — A task that needs files but has no configured source now gets a stable company/task directory instead of inheriting the agent's home folder, agents can inspect, select, and request repositories for their workspace through new runner tools, and chat connections can set project and workspace defaults ([#15749](https://github.com/paperclipai/paperclip/pull/15749)); a fresh task gets its own clone when the project's default checkout contains a worktree the agent cannot read ([#16095](https://github.com/paperclipai/paperclip/pull/16095)), with a one-click Retry on a clean checkout when setup is blocked that way ([#16909](https://github.com/paperclipai/paperclip/pull/16909)).
|
||||
- **Bulk edits on the Agents roster** — Select rows and filter by harness to change the AI connection, the default model, or both for many agents at once, with a preview and retry for failed updates; the roster's status selector is removed and paused agents show a badge instead of dimming ([#17215](https://github.com/paperclipai/paperclip/pull/17215)). The agent Overview shows who created an agent in companies with more than one person ([#16055](https://github.com/paperclipai/paperclip/pull/16055)).
|
||||
- **Grok Bot and Muse, both experimental** — Grok Bot lets you invite an existing Grok Bot as an agent that receives assignments through a webhook routine and works through a dedicated agent-OAuth MCP connection, with guided setup, pairing codes, progress, questions, documents, and files flowing back into the task, and Stop and recovery controls; provider spending is not reported ([#16219](https://github.com/paperclipai/paperclip/pull/16219), [#16338](https://github.com/paperclipai/paperclip/pull/16338), [#16274](https://github.com/paperclipai/paperclip/pull/16274), [#16305](https://github.com/paperclipai/paperclip/pull/16305)). Muse pairs a personal Meta Muse through a wake-only receiver and Vault-backed OAuth with a ten-minute single-use ticket, with readiness, credential expiry, and disconnect controls in the invite dialog ([#16444](https://github.com/paperclipai/paperclip/pull/16444), [#16447](https://github.com/paperclipai/paperclip/pull/16447), [#16448](https://github.com/paperclipai/paperclip/pull/16448), [#16450](https://github.com/paperclipai/paperclip/pull/16450)).
|
||||
- **Talk to an agent with Speko** — A Speko entry in the Apps catalog connects a Speko persona to an existing agent so you can talk to it by browser voice or phone from a task, with transcripts, call controls, inbound-line settings, phone callbacks, and call entries in Activity; shown while the **Chat connectors** experimental setting is on ([#15728](https://github.com/paperclipai/paperclip/pull/15728)).
|
||||
- **Slack bots, refined** — Slack connection Settings are simplified around "Open Slack configuration" and a "Send test message" row, with "Use your own app" under Advanced ([#15679](https://github.com/paperclipai/paperclip/pull/15679)); plain direct messages always start or continue work even when **Require at-mention** is on for channel threads ([#16151](https://github.com/paperclipai/paperclip/pull/16151)); and the eyes reaction appears as soon as a mention is accepted ([#16491](https://github.com/paperclipai/paperclip/pull/16491)).
|
||||
- **A sturdier GitHub review bot** — The bot keeps one main PR comment updated across pushes, ignores messages addressed to other bots, and marks stopped work accurately ([#16901](https://github.com/paperclipai/paperclip/pull/16901)); summary comments are headed with the bot's display name so several bots on one PR are distinguishable ([#16212](https://github.com/paperclipai/paperclip/pull/16212)); publication retries through GitHub 503/429 with bounded backoff and survives restarts without duplicate comments or checks ([#16284](https://github.com/paperclipai/paperclip/pull/16284), [#16883](https://github.com/paperclipai/paperclip/pull/16883)); GitHub bot tools get the gateway's 60-second maximum so `submit_review` no longer times out ([#16275](https://github.com/paperclipai/paperclip/pull/16275)); and settings show a "Reconnect GitHub" notice with reconnect-the-saved-App as the first option ([#16856](https://github.com/paperclipai/paperclip/pull/16856)).
|
||||
- **More apps in the catalog** — Daytona, with personal or shared API-key credentials and 274 generated actions for sandboxes, snapshots, volumes, files, Git, and commands ([#16483](https://github.com/paperclipai/paperclip/pull/16483)); Unikraft Cloud, with actions generated from its OpenAPI specs and a per-connection default metro ([#17139](https://github.com/paperclipai/paperclip/pull/17139)); and Ditto ([#16472](https://github.com/paperclipai/paperclip/pull/16472)). A provider card with several connections collapses them behind an "N connections" row ([#16097](https://github.com/paperclipai/paperclip/pull/16097)).
|
||||
- **Agent commentary in Audit** — The complaints and suggestions agents file about their tooling now have a home: Audit gains a Commentary tab with agent and type filters, text search, paging, and shareable links ([#16884](https://github.com/paperclipai/paperclip/pull/16884)), readable by every human role through a new `commentary:view` permission ([#16903](https://github.com/paperclipai/paperclip/pull/16903)).
|
||||
|
||||
## Fixes
|
||||
|
||||
- **Workspaces and sandboxes** — A remote sandbox whose run failed before export, whose lease was cleaned up with unexported work, or whose task was cancelled before reconstruction is kept with its files behind an explicit repair decision instead of being deleted by cleanup ([#16397](https://github.com/paperclipai/paperclip/pull/16397), [#16583](https://github.com/paperclipai/paperclip/pull/16583), [#16700](https://github.com/paperclipai/paperclip/pull/16700)); a task whose sandbox was destroyed before export offers a board-only "Continue from saved sources" action ([#16690](https://github.com/paperclipai/paperclip/pull/16690)); files left in a stopped run's sandbox are recovered automatically and saved follow-ups delivered once ([#16906](https://github.com/paperclipai/paperclip/pull/16906)); a shutdown-time workspace export keeps its ownership through the finalizer drain ([#16843](https://github.com/paperclipai/paperclip/pull/16843)); a long copy-back no longer loses its lock to PostgreSQL's idle-transaction timeout ([#16340](https://github.com/paperclipai/paperclip/pull/16340), [#16956](https://github.com/paperclipai/paperclip/pull/16956)); resuming a stopped reusable sandbox honors the environment's startup timeout instead of a fixed 60 seconds ([#16802](https://github.com/paperclipai/paperclip/pull/16802)); a single timed-out health check no longer replaces a remote Runner ([#16835](https://github.com/paperclipai/paperclip/pull/16835)); runs on repositories with thousands of historical workspaces no longer sit in "preparing" for hours ([#16372](https://github.com/paperclipai/paperclip/pull/16372), [#16334](https://github.com/paperclipai/paperclip/pull/16334), [#16342](https://github.com/paperclipai/paperclip/pull/16342), [#16963](https://github.com/paperclipai/paperclip/pull/16963)); a shared checkout no longer stays blocked by a reader whose identity is gone ([#16928](https://github.com/paperclipai/paperclip/pull/16928)) and a workspace blocked by another task's restricted worktree gets a clear configuration notice instead of an opaque 403 ([#16545](https://github.com/paperclipai/paperclip/pull/16545), [#16895](https://github.com/paperclipai/paperclip/pull/16895)); a child task inheriting a busy shared workspace waits instead of failing with a misleading secrets error ([#16371](https://github.com/paperclipai/paperclip/pull/16371)); and creating a task with the isolation selector hidden no longer fails setup ([#16220](https://github.com/paperclipai/paperclip/pull/16220)).
|
||||
- **Runs, recovery, and Retry** — Tasks held behind a retained-workspace or failed-run hold get one reliable task-level Retry that preserves files, settles accepted results, or starts an independent workspace ([#16965](https://github.com/paperclipai/paperclip/pull/16965), [#17053](https://github.com/paperclipai/paperclip/pull/17053), [#16894](https://github.com/paperclipai/paperclip/pull/16894), [#16104](https://github.com/paperclipai/paperclip/pull/16104)); Stop prevents automatic continuation until you resume ([#17105](https://github.com/paperclipai/paperclip/pull/17105), [#14180](https://github.com/paperclipai/paperclip/pull/14180)); a server restart no longer strands native runs on permanent holds, repeats saved completions, or overwrites operator stops set in the meantime ([#16349](https://github.com/paperclipai/paperclip/pull/16349), [#16962](https://github.com/paperclipai/paperclip/pull/16962), [#16403](https://github.com/paperclipai/paperclip/pull/16403), [#15824](https://github.com/paperclipai/paperclip/pull/15824)); legacy runs killed or lease-lost before dispatch are retried instead of settled as failed ([#16355](https://github.com/paperclipai/paperclip/pull/16355), [#16358](https://github.com/paperclipai/paperclip/pull/16358)), a slow completion no longer fails a live controller ([#16622](https://github.com/paperclipai/paperclip/pull/16622)), and slow unrelated queries no longer cost legacy runs their lease ([#17032](https://github.com/paperclipai/paperclip/pull/17032)); a normal comment on an in-progress task no longer cancels its running retry ([#16855](https://github.com/paperclipai/paperclip/pull/16855)); messages for paused agents or for an agent other than the task owner are delivered once instead of being failed or deferred forever ([#16679](https://github.com/paperclipai/paperclip/pull/16679), [#16673](https://github.com/paperclipai/paperclip/pull/16673)); an agent stuck marked "running" is repaired after a five-minute grace period ([#16791](https://github.com/paperclipai/paperclip/pull/16791)); a Claude (ACP) run with a stalled tool call fails after 30 minutes instead of running to the four-hour timeout, and MCP calls get a 15-minute timeout ([#16671](https://github.com/paperclipai/paperclip/pull/16671), [#16360](https://github.com/paperclipai/paperclip/pull/16360)); a max-turns exhaustion is no longer misclassified as a missing model ([#13885](https://github.com/paperclipai/paperclip/pull/13885)); and a Codex "model at capacity" reply is retried as transient ([#16407](https://github.com/paperclipai/paperclip/pull/16407)).
|
||||
- **Chat and task UI** — Dismissing a request above the composer clears the badge, survives reload, and no longer blocks Retry ([#17218](https://github.com/paperclipai/paperclip/pull/17218)); a message to a Runner agent no longer briefly swaps its avatar for a generic "Working" row ([#16989](https://github.com/paperclipai/paperclip/pull/16989)); a consumed follow-up leaves the pending queue ([#16317](https://github.com/paperclipai/paperclip/pull/16317)); the final reply of a worktree task is no longer replaced by the "workspace ready" notice ([#16400](https://github.com/paperclipai/paperclip/pull/16400)); a file attached before the first Agent Chat message survives task creation ([#16896](https://github.com/paperclipai/paperclip/pull/16896)); task toasts in a multi-user company appear only for people involved in the task ([#16153](https://github.com/paperclipai/paperclip/pull/16153)); loading a task list no longer adds unrelated finished tasks to your inbox ([#16063](https://github.com/paperclipai/paperclip/pull/16063)); replies default to the latest agent that assigned you the task ([#15594](https://github.com/paperclipai/paperclip/pull/15594)); side panel tabs keep a steady width ([#17068](https://github.com/paperclipai/paperclip/pull/17068), [#14949](https://github.com/paperclipai/paperclip/pull/14949)); Markdown editors no longer show unsaved changes on load ([#13915](https://github.com/paperclipai/paperclip/pull/13915)); and a Slack task that yields to a scheduled continuation returns its result to the original thread ([#17045](https://github.com/paperclipai/paperclip/pull/17045)).
|
||||
- **Costs and budgets** — A budget at its warning threshold renders as a warning instead of a false "AGENT HARD STOP" banner ([#16201](https://github.com/paperclipai/paperclip/pull/16201)), and budget checks no longer scale with the number of unrelated idle agents in the company ([#17046](https://github.com/paperclipai/paperclip/pull/17046)).
|
||||
- **Connections and MCP** — One failed remote MCP call no longer makes every sibling tool on that connection unavailable ([#16890](https://github.com/paperclipai/paperclip/pull/16890)); a provider 403 on one chat operation no longer disables the whole Slack, GitHub, or Discord connection ([#16847](https://github.com/paperclipai/paperclip/pull/16847), [#16138](https://github.com/paperclipai/paperclip/pull/16138)); GitHub and Slack channel tools stay available on later runs of the same task ([#16806](https://github.com/paperclipai/paperclip/pull/16806)); several GitHub review-thread replies each get their own follow-up run ([#17054](https://github.com/paperclipai/paperclip/pull/17054)) and identical tool descriptors are listed once ([#16281](https://github.com/paperclipai/paperclip/pull/16281)); a large MCP catalog refresh no longer lists a tool twice or deadlocks with an OAuth callback ([#16602](https://github.com/paperclipai/paperclip/pull/16602)); assigned tool results over about 500 KB return a bounded reference and a `read_tool_result` tool instead of hanging ([#16980](https://github.com/paperclipai/paperclip/pull/16980)); legacy Codex shell commands can see explicitly assigned service secrets ([#17216](https://github.com/paperclipai/paperclip/pull/17216)); native-runner `call_api` follows the route's own permissions without an extra denylist ([#16040](https://github.com/paperclipai/paperclip/pull/16040)); and sandboxed agents can read run history, attachments, skill files, and recovery records and send the bridge token as `X-API-Key` ([#16575](https://github.com/paperclipai/paperclip/pull/16575), [#16892](https://github.com/paperclipai/paperclip/pull/16892), [#12785](https://github.com/paperclipai/paperclip/pull/12785)).
|
||||
- **Adapters and CLI** — An unlimited Claude run no longer fails its CLI probe after one second ([#15329](https://github.com/paperclipai/paperclip/pull/15329)); concurrent remote Claude runs of one agent no longer break each other's skill staging ([#17061](https://github.com/paperclipai/paperclip/pull/17061)); an isolated Claude task with assigned MCP tools starts ([#17149](https://github.com/paperclipai/paperclip/pull/17149)); a Claude (ACP) server install no longer fails because the ACP bridge was missing from the server package ([#15912](https://github.com/paperclipai/paperclip/pull/15912)); a Runner OpenCode turn survives oversized SSE events ([#16401](https://github.com/paperclipai/paperclip/pull/16401)) and uses the run's managed GitHub credentials in shell commands ([#16488](https://github.com/paperclipai/paperclip/pull/16488)); Hermes calls back at the adapter's configured API URL ([#9425](https://github.com/paperclipai/paperclip/pull/9425)); `pi_local` run logs are about 150× smaller ([#10249](https://github.com/paperclipai/paperclip/pull/10249)); `paperclipai install` and `update` work with npm 12 and Node 26 ([#14000](https://github.com/paperclipai/paperclip/pull/14000)); `paperclipai service install` no longer writes a service that crash-loops on a missing managed shim ([#13985](https://github.com/paperclipai/paperclip/pull/13985)); and the CLI browser login honors rate-limit `Retry-After` headers ([#16482](https://github.com/paperclipai/paperclip/pull/16482)).
|
||||
- **Server and Docker** — Startup no longer fails on legacy `SQL_ASCII` databases ([#16958](https://github.com/paperclipai/paperclip/pull/16958)) or crashes on a scheme-less `publicBaseUrl` ([#13727](https://github.com/paperclipai/paperclip/pull/13727)); a server behind a reverse proxy with slow PTR lookups no longer stops responding for minutes after upgrading ([#16333](https://github.com/paperclipai/paperclip/pull/16333), [#16335](https://github.com/paperclipai/paperclip/pull/16335)); one dropped pooled connection no longer fails permission checks, workspace readiness, or the reaper ([#16857](https://github.com/paperclipai/paperclip/pull/16857), [#16859](https://github.com/paperclipai/paperclip/pull/16859)); Docker boots with many files on the data volume or a non-default `USER_UID`/`USER_GID` no longer walk the whole volume ([#15992](https://github.com/paperclipai/paperclip/pull/15992), [#16475](https://github.com/paperclipai/paperclip/pull/16475)); both shipped Compose files forward `PAPERCLIP_TOOL_ACTION_SIGNING_SECRET` ([#15202](https://github.com/paperclipai/paperclip/pull/15202)); a Stop that outlasts sync-back returns a retryable 409 instead of a 500 ([#16032](https://github.com/paperclipai/paperclip/pull/16032)); concurrent task title edits no longer 500 ([#13898](https://github.com/paperclipai/paperclip/pull/13898)); one malformed comment ID no longer blocks a task's queued wakes ([#13912](https://github.com/paperclipai/paperclip/pull/13912)); watchdog wakes deliver the operator's instructions ([#13771](https://github.com/paperclipai/paperclip/pull/13771)); the child-task cap counts only open children ([#11542](https://github.com/paperclipai/paperclip/pull/11542)); a plain-heartbeat agent can comment on tasks again ([#12621](https://github.com/paperclipai/paperclip/pull/12621)); a human handoff from a legacy run no longer gets cancelled by a slow restore ([#16082](https://github.com/paperclipai/paperclip/pull/16082)); and feedback exports keep public identifiers readable while still masking real tokens ([#16168](https://github.com/paperclipai/paperclip/pull/16168)).
|
||||
|
||||
## Improvements
|
||||
|
||||
- Experimental Cases keep one primary task across agent handoffs with a durable handoff ledger, native `create_case`, `read_case`, `update_case`, and `handoff_case` tools, read-only case pages, and reusable named workflow prompts a case adopts at kickoff or on handoff ([#16959](https://github.com/paperclipai/paperclip/pull/16959), [#17114](https://github.com/paperclipai/paperclip/pull/17114)).
|
||||
- A failed agent-lifecycle verification names the failed step and a corrective action ([#16418](https://github.com/paperclipai/paperclip/pull/16418)), and onboarding creates the agent record as soon as you submit its name, so setup and retries keep one identity ([#17005](https://github.com/paperclipai/paperclip/pull/17005)).
|
||||
- Plugins can subscribe to committed project and agent lifecycle events with replay instead of polling ([#16203](https://github.com/paperclipai/paperclip/pull/16203)); receive agent configuration, instruction, skill, connection, tool, and grant changes through durable runtime hooks ([#16499](https://github.com/paperclipai/paperclip/pull/16499), [#16501](https://github.com/paperclipai/paperclip/pull/16501), [#16603](https://github.com/paperclipai/paperclip/pull/16603), [#16604](https://github.com/paperclipai/paperclip/pull/16604), [#16605](https://github.com/paperclipai/paperclip/pull/16605)); store agent- and project-owned instance secrets in the encrypted secret store ([#16191](https://github.com/paperclipai/paperclip/pull/16191), [#17034](https://github.com/paperclipai/paperclip/pull/17034)); own project storage and task workspaces, act as the default workspace provider, and run native Runner tasks in plugin-owned environments verified by the agent environment test ([#17001](https://github.com/paperclipai/paperclip/pull/17001), [#17247](https://github.com/paperclipai/paperclip/pull/17247), [#16978](https://github.com/paperclipai/paperclip/pull/16978), [#17029](https://github.com/paperclipai/paperclip/pull/17029), [#17252](https://github.com/paperclipai/paperclip/pull/17252), [#15406](https://github.com/paperclipai/paperclip/pull/15406)); and declare authenticated WebSocket routes and agent detail views ([#17111](https://github.com/paperclipai/paperclip/pull/17111)).
|
||||
- More background work waits for committed writes and known deadlines instead of polling the database: Telegram maintenance ([#16094](https://github.com/paperclipai/paperclip/pull/16094)), terminal workspace cleanup ([#16282](https://github.com/paperclipai/paperclip/pull/16282)), login cleanup ([#17106](https://github.com/paperclipai/paperclip/pull/17106)), execution-control recovery ([#17094](https://github.com/paperclipai/paperclip/pull/17094)), MCP event subscriptions ([#17036](https://github.com/paperclipai/paperclip/pull/17036)), and skill-source sync ([#17008](https://github.com/paperclipai/paperclip/pull/17008)); routines and task monitors fire at their saved deadline instead of waiting for the next scan ([#16514](https://github.com/paperclipai/paperclip/pull/16514)).
|
||||
- Faster starts everywhere: the server reports ready sooner after a restart because housekeeping runs after readiness and settled finalizations are skipped ([#16329](https://github.com/paperclipai/paperclip/pull/16329), [#16485](https://github.com/paperclipai/paperclip/pull/16485), [#16328](https://github.com/paperclipai/paperclip/pull/16328)); the Docker image boots from a precompiled runtime bundle, cutting code-load time from up to 24 seconds to under 4 ([#16672](https://github.com/paperclipai/paperclip/pull/16672)); task pages load lazily, defer hidden rendering, and refresh the recent-tasks sidebar through one bounded request ([#16849](https://github.com/paperclipai/paperclip/pull/16849), [#16878](https://github.com/paperclipai/paperclip/pull/16878), [#16851](https://github.com/paperclipai/paperclip/pull/16851), [#16862](https://github.com/paperclipai/paperclip/pull/16862)); and agent launches overlap GitHub, skill, tool, and sandbox preparation, reuse a per-company Git object cache and verified sandbox image files, and make far fewer database and Daytona calls ([#16620](https://github.com/paperclipai/paperclip/pull/16620), [#16608](https://github.com/paperclipai/paperclip/pull/16608), [#16585](https://github.com/paperclipai/paperclip/pull/16585), [#16487](https://github.com/paperclipai/paperclip/pull/16487), [#16687](https://github.com/paperclipai/paperclip/pull/16687), [#16493](https://github.com/paperclipai/paperclip/pull/16493), [#16683](https://github.com/paperclipai/paperclip/pull/16683), [#16536](https://github.com/paperclipai/paperclip/pull/16536), [#16521](https://github.com/paperclipai/paperclip/pull/16521), [#16527](https://github.com/paperclipai/paperclip/pull/16527), [#16561](https://github.com/paperclipai/paperclip/pull/16561), [#16468](https://github.com/paperclipai/paperclip/pull/16468), [#16480](https://github.com/paperclipai/paperclip/pull/16480), [#16552](https://github.com/paperclipai/paperclip/pull/16552), [#16484](https://github.com/paperclipai/paperclip/pull/16484), [#16473](https://github.com/paperclipai/paperclip/pull/16473), [#16425](https://github.com/paperclipai/paperclip/pull/16425), [#16424](https://github.com/paperclipai/paperclip/pull/16424), [#16461](https://github.com/paperclipai/paperclip/pull/16461), [#16498](https://github.com/paperclipai/paperclip/pull/16498), [#16576](https://github.com/paperclipai/paperclip/pull/16576), [#16569](https://github.com/paperclipai/paperclip/pull/16569), [#16414](https://github.com/paperclipai/paperclip/pull/16414), [#17026](https://github.com/paperclipai/paperclip/pull/17026)).
|
||||
- Tasks, project lists, inbox discovery, and Blocked hide agent- and system-created tasks by default behind a "show agent-created tasks" filter saved per company ([#16157](https://github.com/paperclipai/paperclip/pull/16157)), and Inbox "Mine" excludes channel, routine, and agent-created tasks unless you commented, were assigned, or have an open request ([#16356](https://github.com/paperclipai/paperclip/pull/16356)); failure notices show only the latest error with its retry action ([#16982](https://github.com/paperclipai/paperclip/pull/16982)); and an expired connection request card says what is still not connected ([#14067](https://github.com/paperclipai/paperclip/pull/14067)).
|
||||
- An experimental **Artifacts V1** presentation shows paper stacks and tiles on the Artifacts page, compact rows in the panel, and grouped rows in the thread ([#17228](https://github.com/paperclipai/paperclip/pull/17228)); you can upload files directly in the Artifacts panel by icon or drag-and-drop without sending a message ([#15964](https://github.com/paperclipai/paperclip/pull/15964)); the offline recovery page matches the app ([#16904](https://github.com/paperclipai/paperclip/pull/16904)); the "Run with provider trace" header button is replaced by the agent's Debugging configuration ([#17211](https://github.com/paperclipai/paperclip/pull/17211)); and an app's Access tab shows linked users' photos ([#15577](https://github.com/paperclipai/paperclip/pull/15577)).
|
||||
- Adding a repository skill to an agent no longer stalls on a full library read ([#16899](https://github.com/paperclipai/paperclip/pull/16899)), and invalid arguments to assigned tools, `call_api`, and `set_task_monitor` return schema locations and repair guidance ([#16905](https://github.com/paperclipai/paperclip/pull/16905), [#16889](https://github.com/paperclipai/paperclip/pull/16889), [#16868](https://github.com/paperclipai/paperclip/pull/16868), [#16961](https://github.com/paperclipai/paperclip/pull/16961)).
|
||||
- `paperclip_runner` agents can set `homeMode: "preconfigured"` to run native Codex or ACPX Claude with the execution account's existing login, skills, and MCP configuration ([#16486](https://github.com/paperclipai/paperclip/pull/16486)); the Runner reports refreshed OAuth credentials without token values crossing the protocol ([#16463](https://github.com/paperclipai/paperclip/pull/16463)) and can register verified session-local stdio MCP servers on Unix ([#16526](https://github.com/paperclipai/paperclip/pull/16526)); the task PATCH API accepts `expectedStatusVersion` for backlog-to-todo promotion ([#16893](https://github.com/paperclipai/paperclip/pull/16893)); and an anonymous `GET /api/liveness` reports process liveness without touching the database ([#16101](https://github.com/paperclipai/paperclip/pull/16101)).
|
||||
- Failure reports record why an OpenCode turn fails when its server stops ([#16863](https://github.com/paperclipai/paperclip/pull/16863)); Sentry reports for run failures link to the task and run pages, skip classified provider quota limits, and report a native retry only when the retry ends ([#16803](https://github.com/paperclipai/paperclip/pull/16803), [#16029](https://github.com/paperclipai/paperclip/pull/16029), [#16865](https://github.com/paperclipai/paperclip/pull/16865)); due task monitors held by recovery record why in the task activity ([#16891](https://github.com/paperclipai/paperclip/pull/16891)); and, when an OTLP endpoint is configured, traces gain spans for controller preparation, execution configuration, workspace and connector preparation, and finalization ([#16178](https://github.com/paperclipai/paperclip/pull/16178), [#16236](https://github.com/paperclipai/paperclip/pull/16236), [#16419](https://github.com/paperclipai/paperclip/pull/16419), [#16428](https://github.com/paperclipai/paperclip/pull/16428), [#16454](https://github.com/paperclipai/paperclip/pull/16454), [#16515](https://github.com/paperclipai/paperclip/pull/16515)).
|
||||
|
||||
## Upgrade Guide
|
||||
|
||||
- **Migrations `0334`–`0374`** run on upgrade. Additive schema: `0334`, `0341`, and `0342` repository skill snapshots, `project_skill_sources`, and import budgets; `0335` `chat_slack_manager_grants` and its link from Slack registrations; `0336`–`0338` execution workspace repository tables; `0339` and `0370` agent-, plugin-, and project-owned `company_secrets`; `0344` and `0346` Grok Bot tables; `0349`–`0353` Muse tables; `0357` `company_observability`; `0362` prompt injection prevention tables; `0363`–`0368` and `0371` case handoff and workflow tables; `0372`–`0374` `execution_workspace_restore_points`; `0373` interaction dismissal columns. Constraint rewrites: `0340` allows `delete` as a lifecycle-event action; `0361` allows `github` as an AI default provider. Triggers: `0347`, `0348`, and `0354`–`0356` install runtime-invalidation triggers on agents, skills, connections, grants, memberships, and secrets; `0358` bumps `issues.status_version` on assignee change; `0372` expires restore points when issues close. Row updates: `0343` backfills `agents.created_by_user_id` from the activity log; `0347` seeds one `agent_runtime` event per active agent; `0359` grants `commentary:view` to every active human membership; `0363` backfills `case_access_sources`. Indexes: `0360` adds a partial index for retained-workspace recovery; `0345` and `0369` are built `CONCURRENTLY` outside a transaction and are safe to rerun if interrupted. Expect `0343`, `0345`, and `0369` to take longer on instances with large run histories, and the check-constraint rewrites in `0339`, `0362`, and `0370` to scan `company_secrets`, `budget_reservations`, and `cost_events`.
|
||||
- **New agents default to the Paperclip Runner** ([#15993](https://github.com/paperclipai/paperclip/pull/15993), [#15997](https://github.com/paperclipai/paperclip/pull/15997), [#15683](https://github.com/paperclipai/paperclip/pull/15683), [#17120](https://github.com/paperclipai/paperclip/pull/17120), [#17142](https://github.com/paperclipai/paperclip/pull/17142)): on qualified hosts (Apple Silicon, Intel macOS, Linux x64 with glibc 2.39+, and Linux ARM64 for Codex), new Claude, Codex, OpenCode, and Pi agents are created on the native Runner regardless of the `enableNativeRunner` setting. Existing agents are unchanged; choose "Legacy runner" under Advanced to opt a new agent out, or use **Upgrade runner** on an existing agent's configuration to convert it ([#17122](https://github.com/paperclipai/paperclip/pull/17122)).
|
||||
- **New environment variables**, none required. Workspace cleanup: `PAPERCLIP_WORKSPACE_COMPACTION_ENABLED` (on unless exactly `false`) and `PAPERCLIP_WORKSPACE_COMPACTION_DELAY_HOURS` (default `1`) control removal of regenerable files from finished task worktrees, and `PAPERCLIP_WORKSPACE_REAPER_COOLDOWN_DAYS` now defaults to `1` instead of `7` ([#16304](https://github.com/paperclipai/paperclip/pull/16304)); `PAPERCLIP_GIT_CACHE_EXPIRATION_ENABLED` and `PAPERCLIP_GIT_BASE_EXPIRATION_ENABLED` (default `false`) with `PAPERCLIP_GIT_CACHE_EXPIRATION_DRY_RUN` (default `true`) opt into expiring finished worktrees and base clones ([#16457](https://github.com/paperclipai/paperclip/pull/16457)); `PAPERCLIP_GIT_RESTORE_POINTS_ENABLED` (default `false`) with `PAPERCLIP_GIT_RESTORE_POINT_TERMINAL_DELAY_DAYS` (default `3`), `PAPERCLIP_GIT_RESTORE_POINT_IDLE_DAYS` (default `7`, `0` disables), and `PAPERCLIP_GIT_RESTORE_POINT_RETENTION_DAYS` (default `90`) govern encrypted restore points ([#17248](https://github.com/paperclipai/paperclip/pull/17248), [#17271](https://github.com/paperclipai/paperclip/pull/17271), [#17241](https://github.com/paperclipai/paperclip/pull/17241)); `PAPERCLIP_SKILL_VERSION_RETENTION_ENABLED` (default `true`) with `_DRY_RUN` (`false`), `_KEEP` (`0`), and `_GRACE_MINUTES` (`60`) prunes unused materialized skill versions ([#16433](https://github.com/paperclipai/paperclip/pull/16433)); `PAPERCLIP_NATIVE_HARNESS_BACKUP_EXPIRATION_ENABLED` (default `true`) with `_DAYS` (`7`) and `_DRY_RUN` (`false`) expires remote-session failover backups, so reopening an issue closed longer than that window starts a fresh provider session ([#16866](https://github.com/paperclipai/paperclip/pull/16866)). Reporting: `PAPERCLIP_SENTRY_RUN_FAILURES` (`off`, `unexpected`, or `all`; default `off`) ([#16300](https://github.com/paperclipai/paperclip/pull/16300)). Claude agents also honor an existing `ANTHROPIC_BASE_URL` and `ANTHROPIC_CUSTOM_HEADERS` ([#16850](https://github.com/paperclipai/paperclip/pull/16850)).
|
||||
- **New experimental settings**, all off by default: **Grok Bot** (`enableGrokBot`), which requires **Assistant connections (MCP)**, the Paperclip Runner, authenticated sign-in, and an HTTPS `PAPERCLIP_PUBLIC_URL` ([#16219](https://github.com/paperclipai/paperclip/pull/16219)); **Muse — Personal agent** (`enableMuse`), which requires the Runner and public HTTPS ([#16450](https://github.com/paperclipai/paperclip/pull/16450)); **Artifacts V1** (`enableArtifactsV1`) ([#17228](https://github.com/paperclipai/paperclip/pull/17228)). Speko voice appears under the existing **Chat connectors** setting ([#15728](https://github.com/paperclipai/paperclip/pull/15728)) and workflows under **Cases** ([#17114](https://github.com/paperclipai/paperclip/pull/17114)). `enablePipelines` is removed ([#16834](https://github.com/paperclipai/paperclip/pull/16834)). Settings → Connections is now always visible and no longer depends on **Experimental fast responses** ([#16976](https://github.com/paperclipai/paperclip/pull/16976)).
|
||||
- **`commentary:view` for every human role** ([#16903](https://github.com/paperclipai/paperclip/pull/16903)): migration `0359` and startup seeding grant the new permission to every active human membership, including viewers, so anyone in the company can open Audit → Commentary. Deleting that grant from a member is temporary: startup seeding re-adds every role-default grant for each active human member on the next server start, and this release has no durable way to withhold it. Source-task privacy still filters what each person sees in commentary.
|
||||
- **Sentry operators** ([#16300](https://github.com/paperclipai/paperclip/pull/16300)): set `PAPERCLIP_SENTRY_RUN_FAILURES=unexpected` to keep receiving run-failure events; they are off by default even with `SENTRY_DSN_BACKEND` configured.
|
||||
- **API clients**: the run history list is capped at 1,000 rows (default 200) ([#16286](https://github.com/paperclipai/paperclip/pull/16286)); the `linkedCases` field and all Pipeline routes are gone ([#16834](https://github.com/paperclipai/paperclip/pull/16834)); a PATCH that replaces `executionPolicy` and sets `done` during a live review cycle returns `422 unexecuted_review_stage` ([#13178](https://github.com/paperclipai/paperclip/pull/13178)); and anything parsing GitHub review summary headings must accept bot names ([#16212](https://github.com/paperclipai/paperclip/pull/16212)).
|
||||
- **Custom Docker images** ([#16672](https://github.com/paperclipai/paperclip/pull/16672)): the shipped image now starts with `node server/dist-runtime/index.mjs`; images that invoked `server/dist/index.js` through tsx should switch to the runtime bundle.
|
||||
- **Default views change**: agent- and system-created tasks are hidden from task lists until you enable "show agent-created tasks" ([#16157](https://github.com/paperclipai/paperclip/pull/16157)), and Inbox "Mine" no longer includes automation you did not take part in ([#16356](https://github.com/paperclipai/paperclip/pull/16356)).
|
||||
- **Google Workspace** ([#15545](https://github.com/paperclipai/paperclip/pull/15545)): new Google Workspace requests depend on the Paperclip-hosted OAuth broker update, and older brokers reject them; existing per-service Google connections keep working.
|
||||
- **Harness pins** are unchanged from v2026.1023.0: Codex 0.160.0, Claude Agent SDK 0.3.286 (Claude Code 2.1.286), and OpenCode 1.18.34. GitHub Copilot ships at CLI 1.0.88 ([#15701](https://github.com/paperclipai/paperclip/pull/15701)).
|
||||
- No other configuration or API changes require action.
|
||||
|
||||
## Contributors
|
||||
|
||||
This release has 515 commits from 26 contributors. Thank you to everyone who contributed to this release!
|
||||
|
||||
@aashish254, @aronprins, @dylanroy, @harjothkhara, @lorenzozanee, @lucktastic, @MindSyncHub, @naeemakhtar110, @phorel, @Prompt-Surfer, @raviy06, @Sergio-LPA, @serhiq, @simberthon, @SkilLab-Tech, @superbiche, @TaoXieSZ, @tiangao88, @Waseemilyas, @xiehuanyi, @youngjk
|
||||
Reference in new issue
Block a user