Skip to content

Commit 3a1854b

Browse files
chore: sync II spec to dfinity/internet-identity release-2026-07-31 (#338)
## Summary Automated sync of the Internet Identity specification from `dfinity/internet-identity`. **Release:** `release-2026-07-31` (pinned from `f94dde5` → `e646fe93`) **Changed upstream files:** - `src/internet_identity/internet_identity.did` - Ran `npm run sync:ii-spec` — regenerated `docs/references/internet-identity-spec.md` and `docs/references/verifiable-credentials-spec.md` - Build passed ✓ ## Checklist - [ ] Review the diff to `docs/references/internet-identity-spec.md` for content changes - [ ] Review the diff to `docs/references/verifiable-credentials-spec.md` for content changes - [ ] Check for new absolute `internetcomputer.org` link patterns (script exits non-zero if any were missed) - [ ] Verify any renamed or restructured sections are reflected correctly ## Sync recommendation `sync from dfinity/internet-identity — docs/ii-spec.mdx, docs/vc-spec.md, src/internet_identity/internet_identity.did` Co-authored-by: pr-automation-bot-public[bot] <pr-automation-bot-public[bot]@users.noreply.github.com>
1 parent 5802102 commit 3a1854b

3 files changed

Lines changed: 34 additions & 9 deletions

File tree

‎.sources/VERSIONS‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,4 @@ motoko-core v2.4.0
6262
cdk-rs ic-cdk v0.20.1 / ic-cdk-timers v1.0.0 / ic-cdk-executor v2.0.0 317f55c
6363
candid 2025-12-18 # candid v0.10.20, didc v0.5.4 2e4a2cf
6464
response-verification v3.1.0 18c5a37
65-
internetidentity release-2026-07-27 f94dde5f
65+
internetidentity release-2026-07-31 e646fe93

‎.sources/internetidentity‎

Submodule internetidentity updated 101 files

‎public/references/internet-identity.did‎

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,16 @@ type InternetIdentityInit = record {
350350
// via HTTP outcalls when no DNSSEC chain is available — see
351351
// `docs/ongoing/email-recovery.md` §7.6. Same set/clear pattern.
352352
doh_config : opt opt DohConfig;
353+
// URL of the official MCP connector the deployment ships, if any. Same
354+
// set/clear pattern as `dnssec_config`: null keeps the previously stored
355+
// value, `opt null` clears it, `opt opt "https://..."` sets it.
356+
mcp_official_url : opt opt text;
357+
// One-shot upgrade arg driving the MCP config migration: `opt true` gives
358+
// every anchor "enabled, official connector", since neither a value stored
359+
// before the official connector existed nor an absent config was ever a
360+
// choice about it. Unset means no migration, and the migration is refused
361+
// when the deployment ships no `mcp_official_url`.
362+
mcp_config_migration : opt bool;
353363
};
354364

355365
// DNSSEC trust-anchor list. Any feature that needs DNSSEC-verified DNS
@@ -1164,13 +1174,18 @@ type McpConfig = record {
11641174
};
11651175

11661176
// Result of prepare_mcp_registration_delegation: the canister-signature public
1167-
// key the registration delegation is rooted at (P_reg), and the (short)
1168-
// expiration of that delegation. The frontend fetches the signed delegation via
1169-
// get_mcp_registration_delegation and delivers the chain to the trusted MCP
1177+
// key the registration delegation is rooted at (P_reg), the (short) expiration
1178+
// of that delegation, and the identity's resolved trusted_url (the anchor's own
1179+
// server if set, else the official connector). trusted_url is certified (this
1180+
// is an update call), so the frontend can gate delivery on it - delivering the
1181+
// chain only when the connect link's origin matches - rather than trusting an
1182+
// uncertified mcp_get_config query. The frontend fetches the signed delegation
1183+
// via get_mcp_registration_delegation and delivers the chain to the trusted MCP
11701184
// server, which redeems it with mcp_register_v2.
11711185
type PrepareMcpRegistrationDelegation = record {
11721186
user_key : UserKey;
11731187
expiration : Timestamp;
1188+
trusted_url : text;
11741189
};
11751190

11761191
// Result of mcp_register_v2: the expiration (ns since epoch) of the MCP session
@@ -1887,7 +1902,11 @@ service : (opt InternetIdentityInit) -> {
18871902
// devices. Read by the Settings UI and the /mcp connect flow (which verifies
18881903
// the connecting origin against it). Returns the disabled, no-server default
18891904
// for an unauthorized caller or an anchor that never wrote a config.
1890-
mcp_get_config : (anchor_number : UserNumber) -> (McpConfig) query;
1905+
// `null` means the identity has never written a config — distinct from a
1906+
// stored one that is switched off. The two behave differently at /mcp: the
1907+
// first may connect the deployment's official connector (completing the
1908+
// consent is what enables it), the second is sent back to Settings.
1909+
mcp_get_config : (anchor_number : UserNumber) -> (opt McpConfig) query;
18911910

18921911
// Persist the identity's trusted-MCP-server config so it syncs across the
18931912
// identity's devices. Authenticated as the identity, so only the user — never
@@ -1906,9 +1925,15 @@ service : (opt InternetIdentityInit) -> {
19061925
// mcp_get_accounts), and null uses the anchor's default account there; an
19071926
// account_number that isn't the anchor's at target_origin is rejected as
19081927
// Unauthorized. max_ttl is the requested lifetime in ns, defaulting to and
1909-
// capped at 1 hour, and never outliving the session grant. The resolved
1910-
// account_number is returned in McpPrepareDelegation so it can be threaded
1911-
// into mcp_get_delegation (the default account at an origin is mutable).
1928+
// capped at 5 minutes, and never outliving the session grant. The cap is
1929+
// short because it is the residual window revocation cannot reach: once the
1930+
// session is revoked no further delegation can be minted, but one already
1931+
// minted stays usable until it expires. Re-minting is unattended (a fresh
1932+
// prepare/get pair signed by the session key, no user interaction), so
1933+
// re-mint rather than holding a delegation for the life of the session. The
1934+
// resolved account_number is returned in McpPrepareDelegation so it can be
1935+
// threaded into mcp_get_delegation (the default account at an origin is
1936+
// mutable).
19121937
mcp_prepare_delegation : (
19131938
target_origin : FrontendHostname,
19141939
account_number : opt AccountNumber,

0 commit comments

Comments
 (0)