,
/// Display text for messages currently in the immediate steering queue (interjections sent during a running turn).
@@ -28461,23 +28528,6 @@ pub enum DebugCollectLogsResultKind {
Unknown,
}
-///
-///
-///
-/// **Experimental.** This type is part of an experimental wire-protocol surface
-/// and may change or be removed in future SDK or CLI releases.
-///
-///
-#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
-pub enum DisableBypassPermissionsMode {
- #[serde(rename = "disable")]
- Disable,
- /// Unknown variant for forward compatibility.
- #[default]
- #[serde(other)]
- Unknown,
-}
-
/// Persisted extension discovery source
///
///
diff --git a/rust/src/generated/rpc.rs b/rust/src/generated/rpc.rs
index c955637e31..60bf9d804f 100644
--- a/rust/src/generated/rpc.rs
+++ b/rust/src/generated/rpc.rs
@@ -8205,7 +8205,7 @@ impl<'a> SessionRpcPermissionsPaths<'a> {
Ok(serde_json::from_value(_value)?)
}
- /// Adds a directory to the session's allow-list.
+ /// Adds a directory to the session's allow-list and activates conventional skill and agent definitions under it.
///
/// Wire method: `session.permissions.paths.add`.
///
diff --git a/rust/src/generated/session_events.rs b/rust/src/generated/session_events.rs
index 1a7ca36cbd..2b7c90ca96 100644
--- a/rust/src/generated/session_events.rs
+++ b/rust/src/generated/session_events.rs
@@ -116,6 +116,8 @@ pub enum SessionEventType {
PromptCacheBreak,
#[serde(rename = "model.call_failure")]
ModelCallFailure,
+ #[serde(rename = "model.call_finished")]
+ ModelCallFinished,
#[serde(rename = "model.call_start")]
ModelCallStart,
#[serde(rename = "abort")]
@@ -475,6 +477,8 @@ pub enum SessionEventData {
PromptCacheBreak(PromptCacheBreakData),
#[serde(rename = "model.call_failure")]
ModelCallFailure(ModelCallFailureData),
+ #[serde(rename = "model.call_finished")]
+ ModelCallFinished(ModelCallFinishedData),
#[serde(rename = "model.call_start")]
ModelCallStart(ModelCallStartData),
#[serde(rename = "abort")]
@@ -2282,6 +2286,9 @@ pub struct AssistantUsageData {
/// Number of output tokens produced
#[serde(skip_serializing_if = "Option::is_none")]
pub output_tokens: Option,
+ /// Time to first observable model output in milliseconds. Includes text, reasoning, and tool-call output; only available for streaming requests that produce observable output.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub output_ttft_ms: Option,
/// Parent tool call ID when this usage originates from a sub-agent
#[doc(hidden)]
#[deprecated]
@@ -2513,6 +2520,26 @@ pub struct ModelCallFailureData {
pub transport: Option,
}
+/// Session event "model.call_finished". Final lifecycle outcome for one logical model dispatch. A logical dispatch may include internal reconnect or fallback work, so event count is not provider HTTP-request count.
+#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
+pub struct ModelCallFinishedData {
+ /// Whether an accepted successful response requested the exact name and command semantics of a built-in file edit tool, including an external tool explicitly replacing that built-in name. Absent when the logical dispatch did not produce an accepted response.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub contains_built_in_file_edit_request: Option,
+ /// Monotonic elapsed time spent in the logical model dispatch, including any internal transport reconnect or fallback and excluding orchestrator retry backoff, tool execution, confirmations, and post-response processing
+ pub dispatch_duration_ms: f64,
+ /// Version of the built-in file-edit semantic classifier used for this event
+ pub edit_classifier_version: i64,
+ /// Identifier of the user interaction that owns the model dispatch, matching assistant.turn_start.interactionId when available
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub interaction_id: Option,
+ /// Final outcome after post-response acceptance processing
+ pub outcome: ModelCallFinishedOutcome,
+ /// Agent-loop iteration within the interaction that initiated the model dispatch
+ pub turn_id: String,
+}
+
/// Session event "model.call_start". Model API dispatch metadata for internal telemetry
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
@@ -3960,6 +3987,9 @@ pub struct PermissionPromptRequestMcp {
///
#[serde(skip_serializing_if = "Option::is_none")]
pub assisted_approval: Option,
+ /// Whether the host may offer a server-wide "approve all tools from this server" blanket. Absent is treated as true; the runtime sends false when managed policy disables bypass-permissions mode, which forbids the server-wide escalation while still allowing per-tool approval.
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub can_offer_server_wide_approval: Option,
/// Prompt kind discriminator
pub kind: PermissionPromptRequestMcpKind,
/// Advisory runtime permission recommendation. The host remains responsible for deciding the request and may reject it.
@@ -6126,6 +6156,27 @@ pub enum ModelCallFailureSource {
Unknown,
}
+/// Final outcome of one logical model dispatch after response acceptance processing
+#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
+pub enum ModelCallFinishedOutcome {
+ /// The provider response was accepted for continued agent processing.
+ #[serde(rename = "success")]
+ Success,
+ /// The dispatch ended with a provider or transport error.
+ #[serde(rename = "error")]
+ Error,
+ /// The dispatch was cancelled before an accepted response was produced.
+ #[serde(rename = "cancelled")]
+ Cancelled,
+ /// The provider response was rejected during post-response acceptance processing.
+ #[serde(rename = "rejected")]
+ Rejected,
+ /// Unknown variant for forward compatibility.
+ #[default]
+ #[serde(other)]
+ Unknown,
+}
+
/// Finite reason code describing why the current turn was aborted
#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum AbortReason {
@@ -7234,6 +7285,9 @@ pub enum ManagedSettingsEnforcedEscalation {
/// Unrestricted URL fetch access.
#[serde(rename = "unrestricted_urls")]
UnrestrictedUrls,
+ /// A server-wide MCP "Always Allow" (or `--allow-tool `) blanket that would auto-approve every tool from an MCP server. Capped to per-tool approval; each tool still prompts.
+ #[serde(rename = "server_wide_mcp_approval")]
+ ServerWideMcpApproval,
/// Unknown variant for forward compatibility.
#[default]
#[serde(other)]
diff --git a/test/harness/package-lock.json b/test/harness/package-lock.json
index 18a9ac9a61..8c50acb685 100644
--- a/test/harness/package-lock.json
+++ b/test/harness/package-lock.json
@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "ISC",
"devDependencies": {
- "@github/copilot": "^1.0.81-6",
+ "@github/copilot": "^1.0.81-8",
"@modelcontextprotocol/sdk": "^1.26.0",
"@types/node": "^25.3.3",
"@types/node-forge": "^1.3.14",
@@ -472,8 +472,8 @@
}
},
"node_modules/@github/copilot": {
- "version": "1.0.81-6",
- "integrity": "sha512-hT29nRkf0EJE3N6lqeLOPszbdEyALZ+fjYG9zKX5a3L5r+o+m4/KF+8l2gn2yORNqOzwUYNj2vnVzKqeYYNLGg==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-t0aw/1bMpDQx4/WKFgeQKj93iNb+Efva3rO5qE4onkyRcp8BqhWDKsH16H9z8DhV4YRGobnB3GJtOa+4LAnQJg==",
"dev": true,
"license": "SEE LICENSE IN LICENSE.md",
"dependencies": {
@@ -483,19 +483,19 @@
"copilot": "npm-loader.js"
},
"optionalDependencies": {
- "@github/copilot-darwin-arm64": "1.0.81-6",
- "@github/copilot-darwin-x64": "1.0.81-6",
- "@github/copilot-linux-arm64": "1.0.81-6",
- "@github/copilot-linux-x64": "1.0.81-6",
- "@github/copilot-linuxmusl-arm64": "1.0.81-6",
- "@github/copilot-linuxmusl-x64": "1.0.81-6",
- "@github/copilot-win32-arm64": "1.0.81-6",
- "@github/copilot-win32-x64": "1.0.81-6"
+ "@github/copilot-darwin-arm64": "1.0.81-8",
+ "@github/copilot-darwin-x64": "1.0.81-8",
+ "@github/copilot-linux-arm64": "1.0.81-8",
+ "@github/copilot-linux-x64": "1.0.81-8",
+ "@github/copilot-linuxmusl-arm64": "1.0.81-8",
+ "@github/copilot-linuxmusl-x64": "1.0.81-8",
+ "@github/copilot-win32-arm64": "1.0.81-8",
+ "@github/copilot-win32-x64": "1.0.81-8"
}
},
"node_modules/@github/copilot-darwin-arm64": {
- "version": "1.0.81-6",
- "integrity": "sha512-nALa4e8Jc/g5ltIHrpHBHByJ5rlgzoZFylZIrkQY+B9vr3L57d5F6fOiTbf/OF9blFQX7artWRE1K0TmowGNCA==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-jyM7C6GoBM0wTnaXmhZjurXAmuh0/Uo/Z5VrvbCkixElz8XHk4flbQBHDuFqs3HtPWa3Y2OUPLPEQu/NBKXPLQ==",
"cpu": [
"arm64"
],
@@ -510,8 +510,8 @@
}
},
"node_modules/@github/copilot-darwin-x64": {
- "version": "1.0.81-6",
- "integrity": "sha512-K+bp799DejrsmxMNyaFAmKo4xnLJXBb8hkv9N8OCQukmTSoRpfqhv2oTDfgVFadwllt+py/FIdxKTZQYvPGGGw==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-tpJ3kRSB4Pg7xMLWRWP6ouChjBf2apFVW71Gnk2vPIuFiaq3QJPG8PK45hNbvkJ9QCPCfeuW+NjQ0vd0ixaukg==",
"cpu": [
"x64"
],
@@ -526,8 +526,8 @@
}
},
"node_modules/@github/copilot-linux-arm64": {
- "version": "1.0.81-6",
- "integrity": "sha512-aEpnfTTjOxpesFo9jqk/phZUivOhNHbdBRfBrS2NiCPrQZFBYUC4wRVo/Xo2PMMQ4J07b6fU7JJQPoUUkKy5Wg==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-4f8YC/ADwGU9r3afe6UVb1CM6JwwnbAyVGhihN27oQslhIS0LRY5gTAx7OgDdHjQVeieHQpihhn5b3db8IYwtQ==",
"cpu": [
"arm64"
],
@@ -542,8 +542,8 @@
}
},
"node_modules/@github/copilot-linux-x64": {
- "version": "1.0.81-6",
- "integrity": "sha512-NFqonFfJCyA7d3bNoYeLWUQ69zelPr9TTnLpAHCi3scFZqbEvMBDFxW2XsKWwfYuuR9XzfU7/tgOUgq3gmL5aA==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-BrPxuZBK+nDy0IDzLCD6k/okHh20I1KVxhspiGc/RdohqQSCr2o9d8dYgkt7VBBZjMY3IMNnZecsJ8Ex6sAh7g==",
"cpu": [
"x64"
],
@@ -558,8 +558,8 @@
}
},
"node_modules/@github/copilot-linuxmusl-arm64": {
- "version": "1.0.81-6",
- "integrity": "sha512-EE99DFTAgTq6eOFDiiv+OUROD2pDQIrzyyJEfUS9K8JanwNc+Py8vTxrJ0yK0slpJ+Fue5uDRno6c9ys8OM59g==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-Eah4M2SUwwXEY97S5BwRnZtOjCWOnL+LE5NjOckkxBksub5yOuytY+zGzz7TocCUbanDn/EODDtcJsnc0IRa0w==",
"cpu": [
"arm64"
],
@@ -574,8 +574,8 @@
}
},
"node_modules/@github/copilot-linuxmusl-x64": {
- "version": "1.0.81-6",
- "integrity": "sha512-90HRKx25EjhlQNOCCdbiC0Ck0fSKyp8XUxUoCvuNdoigdUP54ZGS07dkyJiJq9KZaKilxZBSpXiNt8t5ETA2Sg==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-KLiklilWDlPjLS7VBj1AkEUuOM+nceU1xVv6xBbgucCDujag5BIcyttE6Dwra6qO1wASfcRo7SSmY67uWHPyQA==",
"cpu": [
"x64"
],
@@ -590,8 +590,8 @@
}
},
"node_modules/@github/copilot-win32-arm64": {
- "version": "1.0.81-6",
- "integrity": "sha512-1dRSHF/7PFzB+AGORg8BJh2n1+N7+sIJDLqozrC9INWFp1t6ercptIXgJTF/V7UZVGQLO4LBBK1HH/QhzUmrfA==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-tYtk8cfKRvQnExm/n5NsIVxBlYLa6hBruczh6QPqxh4xXR5q57TGNoCe2pZw19juaxmCLhJjOkJoq+cM9h7f1Q==",
"cpu": [
"arm64"
],
@@ -606,8 +606,8 @@
}
},
"node_modules/@github/copilot-win32-x64": {
- "version": "1.0.81-6",
- "integrity": "sha512-lIbN1mk6Rm9bWrWU4/UfrC5OCga7XcBi2LBz5roDnNcuG8mKEevDcNOtbEYz/TaJg+WBMoTbGfXBVd1hGy2DTA==",
+ "version": "1.0.81-8",
+ "integrity": "sha512-Quy84tyKfMBZ3ayTFmLkwLS0f1jTGMIAgIQMvG+iAFhcj0Do1jAF0WYFyJba+lArCDgrzsyoYil2GplpFI4HaA==",
"cpu": [
"x64"
],
diff --git a/test/harness/package.json b/test/harness/package.json
index 23b30b9aac..cdefd6919f 100644
--- a/test/harness/package.json
+++ b/test/harness/package.json
@@ -14,7 +14,7 @@
"node": "^20.19.0 || >=22.12.0"
},
"devDependencies": {
- "@github/copilot": "^1.0.81-6",
+ "@github/copilot": "^1.0.81-8",
"@modelcontextprotocol/sdk": "^1.26.0",
"@types/node": "^25.3.3",
"@types/node-forge": "^1.3.14",