beta dist-tag and should be kept on the same version.
Published versions are listed on npm:
@cognition-ai/sdk,
@cognition-ai/ai-sdk,
@cognition-ai/cloudflare-agents,
@cognition-ai/harness-devin.
The examples repository is tagged v<version>
for each release.
September 29, 2026
Model discovery for local sessions. Install with
npm install @cognition-ai/sdk@beta; all four
packages are at 0.0.1-beta.7.@cognition-ai/sdk- New
LocalSession.models()returns the models and Fusion pairings the CLI accepts for the session (options, each with anid, displaynameandsupportsImageswhen the CLI reports it) and the model in effect (current). It reads themodelconfig option the CLI already returns onsession/new,session/loadandsession/set_config_option, so it tracks the CLI version and account without a separate call, and replacesdevin models listas the way to find validFusion({ leader, sidekick })inputs. See Models and Fusion. - New
session.configOptionson every session exposes the raw ACP config options the agent last reported, typed asSessionConfigOption[](withSessionConfigSelectOptionvalues). setModelrejects a model or pairing the CLI does not advertise with a newModelRejectedErrorcarrying the id (model) and the CLI’s explanation (reason), and leaves the current model in place. Previously the call failed with a bareInvalid paramsJSON-RPC error whose reason was only inerror.data.SessionStartupErrorfrom acreateSession({ model })that fails the same way now has theModelRejectedErroras itscause.setModelalso refreshesmodels().currentfrom the CLI’s response.
@cognition-ai/ai-sdk, @cognition-ai/cloudflare-agents,
@cognition-ai/harness-devin: no changes beyond the SDK dependency.Examples: no code changes; the
examples repository is at v0.0.1-beta.7.Published packages:
@cognition-ai/sdk,
@cognition-ai/ai-sdk,
@cognition-ai/cloudflare-agents,
@cognition-ai/harness-devin.September 22, 2026
ACP version selection. Install with
npm install @cognition-ai/sdk@beta; all four packages are
at 0.0.1-beta.6.@cognition-ai/sdk- New
acpVersionoption oncreateDevin,CloudDevin.connectandLocalDevin.start, typed asAcpProtocolVersion(1 | 2). PassacpVersion: 1to require ACP v1 on either transport; the SDK then sends only v1initializefields and rejects an agent that selects v2. The default,acpVersion: 2, is unchanged: it offers v2 and still accepts an agent that selects v1. The selected version is exposed asdevin.protocolVersion. See Choosing the ACP version. - Session methods follow the negotiated version, so application code does not change:
loadSessionusessession/loadon v1 andsession/resumeon v2, andawait turncompletes from the prompt result on v1 and the idlestate_updateon v2.turn_stateevents and the cloudreplay: "tail"/"none"load options remain v2-only. - Fixed: a local connection whose ACP negotiation was rejected kept its stdio listeners and
JSON-RPC responders.
LocalDevin.startandLocalDevin.connectnow close the connection before rethrowing, andCloudDevin.connectcloses its socket on handshake errors. CustomLocalDevin.connectstreams should exposeoff()alongsideon()so the SDK can detach its listeners; streams with onlyon()still work, but keep inert listeners attached.
@cognition-ai/ai-sdk, @cognition-ai/cloudflare-agents,
@cognition-ai/harness-devin: no changes beyond the SDK dependency.Examples: the quickstart programs accept --acp-v1. The other
examples need no code changes; the examples repository
is at v0.0.1-beta.6.Published packages:
@cognition-ai/sdk,
@cognition-ai/ai-sdk,
@cognition-ai/cloudflare-agents,
@cognition-ai/harness-devin.September 22, 2026
Install with
npm install @cognition-ai/sdk@beta; all four packages are at 0.0.1-beta.5.Fix: session MCP servers@cognition-ai/sdkacceptsmcpServersoncreateSession,loadSession, andattachfor local and cloud sessions. These methods previously sent an empty MCP server list.- The public
McpServertype describes stdio, HTTP, and SSE configurations. The SDK addstype: "stdio"to untagged stdio servers for ACP v2 without changing caller input. - The SDK and
@cognition-ai/harness-devinupdate their CLI dependency to3000.11.1. This CLI build registers the MCP servers supplied through ACP.
@cognition-ai/sdk,
@cognition-ai/ai-sdk,
@cognition-ai/cloudflare-agents,
@cognition-ai/harness-devin.September 19, 2026
Client-level tracing and a public API cleanup. Install with
npm install @cognition-ai/sdk@beta;
every package is at 0.0.1-beta.4.@cognition-ai/sdk- Tracing is now set once on the client: pass
tracing: traceSessions({ tracer })from@cognition-ai/sdk/tracingtocreateDevin,LocalDevin.start,LocalDevin.connectorCloudDevin.connect. Every session the client creates, loads, attaches or launches is traced, and prompts are recorded from every prompt method (send,run,stream,streamUpdates,postMessage), sorecordPromptis no longer needed. Cloud messages sent from other clients, such as the web app, are traced as their own turns. History replayed on load or attach is not exported again. A session can add metadata and tags with its owntracingoption, or opt out withtracing: false.traceSessionkeeps its API for tracing a single session. See Tracing. - Fixed: a cloud turn’s final reply, which can arrive after the turn goes idle, was added to the next turn’s trace output.
- Fixed: when the agent connection drops, sessions now get the same
ConnectionClosedErroras pending requests, with the specific reason (for exampleConnection to the agent closed: read ECONNRESET). OutputNotification,ShowModalNotification,RevertStepInfo,RevertStepsUpdatedNotificationandRevertHistoryRewoundNotificationare now generated from the ACP schema.RevertStepInfogainsstepId, its optional id fields andfirstRemovedUserMessageIdacceptnull, andOutputNotification.levelis optional.- New
LocalDevin.spawn(cliPath, options?, env?)starts a given CLI binary with the given environment, withoutstart()’s API key and state directory handling. - New
toolCallText(call)andisToolCallInputFinal(call)helpers. bundledCliPathandcliPackageNameare no longer exported. UseresolveCliPath().
@cognition-ai/ai-sdk- The
devin-statusanddevin-lifecycledata part types are derived from the SDK’sStatusEventandLifecycleEvent.
@cognition-ai/harness-devin- Fixed: a tool call first announced by a permission request now streams like any other tool
call, and keeps
nativeNamefor mapped tools (execshown asbash,find_file_by_nameshown asglob). - The bridge starts the CLI with
LocalDevin.spawn, so spawn failures get the SDK’s clearer error messages.
@cognition-ai/cloudflare-agents: no changes beyond the SDK dependency.Examples: the examples repository is at
v0.0.1-beta.4. The examples need no code changes for this release.September 18, 2026
Tracing and Fusion models. Install with
npm install @cognition-ai/sdk@beta; every package is
at 0.0.1-beta.3.@cognition-ai/sdk- New
traceSession(session)at@cognition-ai/sdk/tracingrecords a session as OpenTelemetry spans: oneagentspan per turn, onegenerationspan per model request (tokens, cache reads and writes, request id, time to first token, cost when the agent reports it) and onetoolspan per tool call. It uses@opentelemetry/api(an optional peer dependency), so your application configures the provider and exporter, for example Langfuse’sLangfuseSpanProcessor. See Tracing. - New
Fusion({ leader, sidekick })for local sessions:createSession({ model: Fusion({ leader: "claude-opus-5-max", sidekick: "swe-2-high" }) }), and the same onLocalDevin.startandsession.setModel. Plain model ids such as"fusion-adaptive"still work, and the CLI rejects pairings it doesn’t list. See Models and Fusion. - The generated Cognition ACP schema is refreshed from the CLI. The CLI no longer sends the
restartstop cause, soAgentStopCause.RestartandAgentStoppedNotification.restartReasonare removed; code that checkscause === "restart"can drop that branch.
@cognition-ai/ai-sdk, @cognition-ai/cloudflare-agents, @cognition-ai/harness-devin:
no changes beyond the SDK dependency.September 14, 2026
Two new packages, cloud sessions on edge runtimes, and cancellable turns. Install with
npm install @cognition-ai/sdk@beta; every package is at 0.0.1-beta.2.New: @cognition-ai/ai-sdk — Devin session events as
AI SDK UI message streams, so a useChat
route is createUIMessageStreamResponse({ stream: toUIMessageStream(session.stream(toPromptInput(messages))) }).
Messages and thoughts become text and reasoning parts, tool calls dynamic-tool parts carrying
the SDK’s ToolCallDetail, plans and pull requests data-devin-* parts. Also toUIMessages(replay)
for reloading history, endWhenIdle for resumeStream(), devinSessionMetadata(), and
ToolApprovals for answering permission requests as AI SDK tool approvals. Runs on every runtime
the SDK does. See AI SDK UI.New: @cognition-ai/cloudflare-agents — a Devin cloud session behind a
Cloudflare Agents AIChatAgent:
export class DevinChat extends DevinChatAgent<Env> {} gives one Devin session per chat Durable
Object, with one queued turn per message, stop, permission requests as tool approvals,
startOver(), importSession(id) to continue a session from the Devin app, and recovery across
Durable Object restarts. Agent state carries the session id and URL, status, activity, plan and
pull requests. See Cloudflare Agents and the
Cloudflare Agents chat example.@cognition-ai/sdk- Cloud sessions run on edge runtimes: Cloudflare Workers and Deno 2.5+. The ACP socket uses the
runtime’s built-in
WebSocket(afetchupgrade on Workers) and thewsdependency is gone; runtimes whoseWebSocketcan’t send headers (browsers, Vercel Edge, older Deno) get aDevinErrorfromconnect().CloudDevin.attachTo()now takes a WHATWG-style socket. See Where it runs. session.stream(),streamUpdates(),send(),postMessage()andrun()accept{ signal }. Aborting cancels the Devin turn right away (stopReason: "cancelled"); pass a route’srequest.signalso a client stop cancels the turn. See Cancelling a turn.ToolCall.detailgainscomputer_use— Devin’s browser and desktop automation on the cloud, with typedactions— which wasotherbefore. See Streaming events.- A structured
run()whose turn stops without finishing (cancelled, refusal, max tokens) resolves with thatstopReasoninstead of rejecting with “The turn produced no JSON to validate”; readingoutcome.outputon such an outcome throws. See Structured output.
@cognition-ai/ai-sdk (first release; fixes found while building the Cloudflare example)toUIMessageStreamno longer opens a second reasoning part when the cloud restates a finished thought with only whitespace changes, which showed every thought twice.ToolApprovals.respond()also answers denials stored asoutput-denied, as Cloudflare’sAIChatAgentrecords them.
@cognition-ai/cloudflare-agents (first release)- A turn drops updates for tool calls that belong to an earlier message: stopping a turn does not stop the command Devin was running, and its late completion used to fold the stopped reply into the next one.
@cognition-ai/harness-devin — no changes beyond the SDK dependency.Examples — the examples repository is at
v0.0.1-beta.2 with a new Cloudflare Agents chat; the
quickstart prints computer_use tool calls; session-board no longer needs ws. See
which examples need beta.2.September 11, 2026
The first public beta of
@cognition-ai/sdk and @cognition-ai/harness-devin. Install with
npm install @cognition-ai/sdk@beta; see Quickstart.@cognition-ai/sdkcreateDevin()connects to the cloud unlesscwdis passed; nothing else in the environment picks the mode. Local sessions require an API key (apiKeyorDEVIN_API_KEY) and fail before spawning the CLI without one. See How it works.- Local sessions run the bundled CLI with their own config, session store and cache under
~/.devin-sdk(stateDir), isolated from an interactive Devin CLI on the same machine. The bundled CLI platform packages are pinned to3000.6.11. - Cloud sessions can be scoped to repositories:
createSession({ repos }), orsession.setRepos()before the first prompt. Repositories the organization cannot access reject with aDevinError. launchSession(prompt, { session, turn })on cloud and local clients returns{ session, turn }once the first prompt is accepted. See Launch and structured output.- Session-wide events:
session.events()andsession.updates()deliver every live update for a session — including turns started from the web app or another process — as typedSessionEvents (status,activity,lifecycle,typing,pull_request, …).session.metaexposes the latest session snapshot, andlistSessions()results carry typed_meta. See Watching sessions. ToolCall.detailnormalizes what each tool call is and what it was given (exec,read,write,edit,mcp,permission_request,ask_user_question, …) across local and cloud agents.attach()is available on every client;LoadedSession<S>is the shared result type and every session option type extendsSessionOptions. The ACPstate_updatesurfaces as a typedturn_stateevent.- Structured output parsing no longer fails on
```jsonblocks whose string values contain fenced code, andthought_deltaevents no longer repeat reasoning already streamed. - The
CognitionAcpescape hatch exports every Cognition ACP method constant, params/response type and error code, forsession.extRequest()/devin.extRequest().
@cognition-ai/harness-devincreateDevin({ baseUrl })(defaultDEVIN_API_URL) selects the Devin deployment the in-sandbox CLI talks to.- Setup phases are reported as
infodiagnostics (devin.bridge.attach|spawn|ready,devin.cli,devin.session,devin.session.ready,devin.prompt) so hosts can show progress before the first token. See Diagnostics. - The bridge holds back a
tool-callpart until the CLI has finished streaming the call’s input, fixingAI_InvalidToolInputErroron builtin tool calls. - Aborting a turn (
abortSignal) leaves the session cleanly promptable, and a parked bridge that cannot be reattached is reported as awarndiagnostic and replaced instead of colliding on the port. - The sandbox bootstrap assets are embedded in the module, so the adapter works when a bundler (a Next.js server bundle, a Vercel deployment) inlines it.

