You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/protocol/draft/session-setup.mdx
+96-5Lines changed: 96 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,6 +30,11 @@ sequenceDiagram
30
30
Agent->>Client: session/update
31
31
Note over Agent,Client: All content streamed
32
32
Agent-->>Client: session/load response
33
+
else
34
+
Client->>Agent: session/resume (sessionId)
35
+
Note over Agent: Restore session context
36
+
Note over Agent: Connect to MCP servers
37
+
Agent-->>Client: session/resume response
33
38
end
34
39
35
40
Note over Client,Agent: Ready for prompts
@@ -77,7 +82,7 @@ The Agent **MUST** respond with a unique [Session ID](#session-id) that identifi
77
82
78
83
## Loading Sessions
79
84
80
-
Agents that support the `loadSession` capability allow Clients to resume previous conversations. This feature enables persistence across restarts and sharing sessions between different Client instances.
85
+
Agents that support the `loadSession` capability allow Clients to resume previous conversations with history replay. This feature enables persistence across restarts and sharing sessions between different Client instances.
81
86
82
87
### Checking Support
83
88
@@ -166,17 +171,102 @@ Followed by the agent's response:
166
171
}
167
172
```
168
173
169
-
When **all** the conversation entries have been streamed to the Client, the Agent **MUST** respond to the original `session/load` request.
174
+
When **all** the conversation entries have been streamed to the Client, the
175
+
Agent **MUST** respond to the original `session/load` request.
170
176
171
177
```json
172
178
{
173
179
"jsonrpc": "2.0",
174
180
"id": 1,
175
-
"result": null
181
+
"result": {}
182
+
}
183
+
```
184
+
185
+
The response **MAY** also include initial mode, model, or session configuration
186
+
state when those features are supported by the Agent.
187
+
188
+
The Client can then continue sending prompts as if the session was never
189
+
interrupted.
190
+
191
+
## Resuming Sessions
192
+
193
+
<Note>
194
+
This section describes the preview `session/resume` method. Clients MUST gate
195
+
usage on the `sessionCapabilities.resume` capability being present during
196
+
initialization.
197
+
</Note>
198
+
199
+
Agents that advertise `sessionCapabilities.resume` allow Clients to reconnect to
200
+
an existing session without replaying the conversation history.
201
+
202
+
### Checking Support
203
+
204
+
Before attempting to resume a session, Clients **MUST** verify that the Agent
205
+
supports this capability by checking for the `sessionCapabilities.resume` field
206
+
in the `initialize` response:
207
+
208
+
```json highlight={8-10}
209
+
{
210
+
"jsonrpc": "2.0",
211
+
"id": 0,
212
+
"result": {
213
+
"protocolVersion": 1,
214
+
"agentCapabilities": {
215
+
"sessionCapabilities": {
216
+
"resume": {}
217
+
}
218
+
}
219
+
}
220
+
}
221
+
```
222
+
223
+
If `sessionCapabilities.resume` is not present, the Agent does not support
224
+
resuming sessions and Clients **MUST NOT** attempt to call `session/resume`.
225
+
226
+
### Resuming a Session
227
+
228
+
To resume an existing session without replaying prior messages, Clients
229
+
**MUST** call the `session/resume` method with:
230
+
231
+
- The [Session ID](#session-id) to resume
232
+
-[MCP servers](#mcp-servers) to connect to
233
+
- The [working directory](#working-directory)
234
+
235
+
```json
236
+
{
237
+
"jsonrpc": "2.0",
238
+
"id": 2,
239
+
"method": "session/resume",
240
+
"params": {
241
+
"sessionId": "sess_789xyz",
242
+
"cwd": "/home/user/project",
243
+
"mcpServers": [
244
+
{
245
+
"name": "filesystem",
246
+
"command": "/path/to/mcp-server",
247
+
"args": ["--mode", "filesystem"],
248
+
"env": []
249
+
}
250
+
]
251
+
}
252
+
}
253
+
```
254
+
255
+
Unlike `session/load`, the Agent **MUST NOT** replay the conversation history
256
+
via `session/update` notifications before responding. Instead, it restores the
257
+
session context, reconnects to the requested MCP servers, and returns once the
258
+
session is ready to continue.
259
+
260
+
```json
261
+
{
262
+
"jsonrpc": "2.0",
263
+
"id": 2,
264
+
"result": {}
176
265
}
177
266
```
178
267
179
-
The Client can then continue sending prompts as if the session was never interrupted.
268
+
The response **MAY** also include initial mode, model, or session configuration
269
+
state when those features are supported by the Agent.
180
270
181
271
## Additional Workspace Roots
182
272
@@ -214,7 +304,7 @@ When present, `additionalDirectories` has the following behavior:
214
304
-`cwd` remains the primary working directory and the base for relative paths
215
305
- each `additionalDirectories` entry **MUST** be an absolute path
216
306
- omitting the field or providing an empty array activates no additional roots for the resulting session
217
-
- on `session/load`, Clients must send the full intended additional-root list again because omitting the field or providing an empty array does not restore stored roots implicitly
307
+
- on `session/load` and `session/resume`, Clients must send the full intended additional-root list again because omitting the field or providing an empty array does not restore stored roots implicitly
218
308
219
309
## Session ID
220
310
@@ -225,6 +315,7 @@ Clients use this ID to:
225
315
- Send prompt requests via `session/prompt`
226
316
- Cancel ongoing operations via `session/cancel`
227
317
- Load previous sessions via `session/load` (if the Agent supports the `loadSession` capability)
318
+
- Resume previous sessions via `session/resume` (if the Agent supports the preview `sessionCapabilities.resume` capability)
Copy file name to clipboardExpand all lines: docs/rfds/updates.mdx
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,13 @@ rss: true
6
6
7
7
This page tracks lifecycle changes for ACP Requests for Dialog. For broader ACP announcements, see [Updates](/updates).
8
8
9
+
<Updatelabel="April 14, 2026"tags={["Preview"]}>
10
+
## session/resume RFD moves to Preview stage
11
+
12
+
The RFD for adding a `session/resume` method to the protocol has been moved to Preview stage. Please review the [RFD](/rfds/session-resume) for more information on the current proposal and provide feedback before the feature is stabilized.
Copy file name to clipboardExpand all lines: schema/schema.unstable.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1238,7 +1238,7 @@
1238
1238
"$ref": "#/$defs/ResumeSessionRequest"
1239
1239
}
1240
1240
],
1241
-
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nResumes an existing session without returning previous messages.\n\nThis method is only available if the agent advertises the `session.resume` capability.\n\nThe agent should resume the session context, allowing the conversation to continue\nwithout replaying the message history (unlike `session/load`).",
1241
+
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nResumes an existing session without returning previous messages.\n\nThis method is only available if the agent advertises the `sessionCapabilities.resume` capability.\n\nThe agent should resume the session context, allowing the conversation to continue\nwithout replaying the message history (unlike `session/load`).",
1242
1242
"title": "ResumeSessionRequest"
1243
1243
},
1244
1244
{
@@ -5219,7 +5219,7 @@
5219
5219
"type": "object"
5220
5220
},
5221
5221
"ResumeSessionRequest": {
5222
-
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nRequest parameters for resuming an existing session.\n\nResumes an existing session without returning previous messages (unlike `session/load`).\nThis is useful for agents that can resume sessions but don't implement full session loading.\n\nOnly available if the Agent supports the `session.resume` capability.",
5222
+
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nRequest parameters for resuming an existing session.\n\nResumes an existing session without returning previous messages (unlike `session/load`).\nThis is useful for agents that can resume sessions but don't implement full session loading.\n\nOnly available if the Agent supports the `sessionCapabilities.resume` capability.",
0 commit comments