From 308c7315e15486d6911a5bce9ad20a81a1b694e4 Mon Sep 17 00:00:00 2001 From: ffmcgee Date: Thu, 7 May 2026 11:23:00 +0200 Subject: [PATCH 1/5] feat: add eip1193-compatilble as a supported session property --- packages/chain-agnostic-permission/CHANGELOG.md | 4 ++++ .../src/scope/constants.test.ts | 14 ++++++++------ .../src/scope/constants.ts | 1 + .../src/scope/supported.test.ts | 5 +++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/chain-agnostic-permission/CHANGELOG.md b/packages/chain-agnostic-permission/CHANGELOG.md index a5cd521ccc..e9a7108b49 100644 --- a/packages/chain-agnostic-permission/CHANGELOG.md +++ b/packages/chain-agnostic-permission/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add `Eip1193Compatible` property in `KnownSessionProperties` enum to support EIP-1193-style connections established through `connect-evm` ([#8731](https://github.com/MetaMask/core/pull/8731)) + ### Changed - Bump `@metamask/permission-controller` from `^12.2.1` to `^13.1.0` ([#8317](https://github.com/MetaMask/core/pull/8317), [#8661](https://github.com/MetaMask/core/pull/8661), [#8722](https://github.com/MetaMask/core/pull/8722)) diff --git a/packages/chain-agnostic-permission/src/scope/constants.test.ts b/packages/chain-agnostic-permission/src/scope/constants.test.ts index 9b3dafdc91..581f8eff26 100644 --- a/packages/chain-agnostic-permission/src/scope/constants.test.ts +++ b/packages/chain-agnostic-permission/src/scope/constants.test.ts @@ -7,9 +7,9 @@ import { describe('KnownRpcMethods', () => { it('should match the snapshot', () => { expect(KnownRpcMethods).toMatchInlineSnapshot(` - { - "bip122": [], - "eip155": [ + Object { + "bip122": Array [], + "eip155": Array [ "personal_sign", "eth_signTypedData_v4", "wallet_watchAsset", @@ -53,8 +53,8 @@ describe('KnownRpcMethods', () => { "eth_syncing", "eth_uninstallFilter", ], - "solana": [], - "tron": [], + "solana": Array [], + "tron": Array [], } `); }); @@ -63,8 +63,9 @@ describe('KnownRpcMethods', () => { describe('KnownSessionProperties', () => { it('should match the snapshot', () => { expect(KnownSessionProperties).toMatchInlineSnapshot(` - { + Object { "Bip122AccountChangedNotifications": "bip122_accountChanged_notifications", + "Eip1193Compatible": "eip1193-compatible", "SolanaAccountChangedNotifications": "solana_accountChanged_notifications", "TronAccountChangedNotifications": "tron_accountChanged_notifications", } @@ -74,6 +75,7 @@ describe('KnownSessionProperties', () => { describe('isKnownSessionPropertyValue', () => { it('should return true for known session property values', () => { + expect(isKnownSessionPropertyValue('eip1193-compatible')).toBe(true); expect( isKnownSessionPropertyValue('solana_accountChanged_notifications'), ).toBe(true); diff --git a/packages/chain-agnostic-permission/src/scope/constants.ts b/packages/chain-agnostic-permission/src/scope/constants.ts index bc31ebf963..1737948162 100644 --- a/packages/chain-agnostic-permission/src/scope/constants.ts +++ b/packages/chain-agnostic-permission/src/scope/constants.ts @@ -98,6 +98,7 @@ export const KnownNotifications: Record = * Session properties for known CAIP namespaces. */ export enum KnownSessionProperties { + Eip1193Compatible = 'eip1193-compatible', SolanaAccountChangedNotifications = 'solana_accountChanged_notifications', TronAccountChangedNotifications = 'tron_accountChanged_notifications', Bip122AccountChangedNotifications = 'bip122_accountChanged_notifications', diff --git a/packages/chain-agnostic-permission/src/scope/supported.test.ts b/packages/chain-agnostic-permission/src/scope/supported.test.ts index e3bddaac32..48d8189f76 100644 --- a/packages/chain-agnostic-permission/src/scope/supported.test.ts +++ b/packages/chain-agnostic-permission/src/scope/supported.test.ts @@ -495,6 +495,11 @@ describe('Scope Support', () => { describe('isSupportedSessionProperty', () => { it('returns true for the session property', () => { + expect( + isSupportedSessionProperty( + KnownSessionProperties.Eip1193Compatible, + ), + ).toBe(true); expect( isSupportedSessionProperty( KnownSessionProperties.SolanaAccountChangedNotifications, From 77e03b32e626837bcf5aabfb0f3f8a00604974e9 Mon Sep 17 00:00:00 2001 From: ffmcgee Date: Thu, 7 May 2026 11:27:42 +0200 Subject: [PATCH 2/5] lint:misc:check --- .../chain-agnostic-permission/src/scope/supported.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/chain-agnostic-permission/src/scope/supported.test.ts b/packages/chain-agnostic-permission/src/scope/supported.test.ts index 48d8189f76..d55ec08b17 100644 --- a/packages/chain-agnostic-permission/src/scope/supported.test.ts +++ b/packages/chain-agnostic-permission/src/scope/supported.test.ts @@ -496,9 +496,7 @@ describe('Scope Support', () => { describe('isSupportedSessionProperty', () => { it('returns true for the session property', () => { expect( - isSupportedSessionProperty( - KnownSessionProperties.Eip1193Compatible, - ), + isSupportedSessionProperty(KnownSessionProperties.Eip1193Compatible), ).toBe(true); expect( isSupportedSessionProperty( From 550b27a69e45b1b531398c0ed7edd3b4dcf2b4bc Mon Sep 17 00:00:00 2001 From: ffmcgee Date: Thu, 7 May 2026 11:31:34 +0200 Subject: [PATCH 3/5] test: inline snapshot update --- .../src/scope/constants.test.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/chain-agnostic-permission/src/scope/constants.test.ts b/packages/chain-agnostic-permission/src/scope/constants.test.ts index 581f8eff26..fbbe3d9138 100644 --- a/packages/chain-agnostic-permission/src/scope/constants.test.ts +++ b/packages/chain-agnostic-permission/src/scope/constants.test.ts @@ -7,9 +7,9 @@ import { describe('KnownRpcMethods', () => { it('should match the snapshot', () => { expect(KnownRpcMethods).toMatchInlineSnapshot(` - Object { - "bip122": Array [], - "eip155": Array [ + { + "bip122": [], + "eip155": [ "personal_sign", "eth_signTypedData_v4", "wallet_watchAsset", @@ -53,8 +53,8 @@ describe('KnownRpcMethods', () => { "eth_syncing", "eth_uninstallFilter", ], - "solana": Array [], - "tron": Array [], + "solana": [], + "tron": [], } `); }); @@ -63,7 +63,7 @@ describe('KnownRpcMethods', () => { describe('KnownSessionProperties', () => { it('should match the snapshot', () => { expect(KnownSessionProperties).toMatchInlineSnapshot(` - Object { + { "Bip122AccountChangedNotifications": "bip122_accountChanged_notifications", "Eip1193Compatible": "eip1193-compatible", "SolanaAccountChangedNotifications": "solana_accountChanged_notifications", From 890629497fe2500dd04ab5df50f9aa3adcda808f Mon Sep 17 00:00:00 2001 From: ffmcgee Date: Thu, 7 May 2026 13:44:18 +0200 Subject: [PATCH 4/5] fix: add eip1193-compatible session property to caveat value on util legacy permissions function --- .../chain-agnostic-permission/CHANGELOG.md | 1 + .../src/caip25Permission.test.ts | 36 ++++++++++++++----- .../src/caip25Permission.ts | 5 ++- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/packages/chain-agnostic-permission/CHANGELOG.md b/packages/chain-agnostic-permission/CHANGELOG.md index e9a7108b49..42974e9d06 100644 --- a/packages/chain-agnostic-permission/CHANGELOG.md +++ b/packages/chain-agnostic-permission/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Add `Eip1193Compatible` property in `KnownSessionProperties` enum to support EIP-1193-style connections established through `connect-evm` ([#8731](https://github.com/MetaMask/core/pull/8731)) +- Set `sessionProperties: { 'eip1193-compatible': true }` in `getCaip25PermissionFromLegacyPermissions` so that legacy EIP-1193 permission requests are tagged as EIP-1193-compatible ([#8731](https://github.com/MetaMask/core/pull/8731)) ### Changed diff --git a/packages/chain-agnostic-permission/src/caip25Permission.test.ts b/packages/chain-agnostic-permission/src/caip25Permission.test.ts index 9cb20bc676..514488adc9 100644 --- a/packages/chain-agnostic-permission/src/caip25Permission.test.ts +++ b/packages/chain-agnostic-permission/src/caip25Permission.test.ts @@ -2001,7 +2001,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2038,7 +2040,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2076,7 +2080,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2126,7 +2132,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2163,7 +2171,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2201,7 +2211,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2251,7 +2263,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2300,7 +2314,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], @@ -2349,7 +2365,9 @@ describe('getCaip25PermissionFromLegacyPermissions', () => { }, }, isMultichainOrigin: false, - sessionProperties: {}, + sessionProperties: { + 'eip1193-compatible': true, + }, }, }, ], diff --git a/packages/chain-agnostic-permission/src/caip25Permission.ts b/packages/chain-agnostic-permission/src/caip25Permission.ts index 0d1cc71eeb..493b0c49f7 100644 --- a/packages/chain-agnostic-permission/src/caip25Permission.ts +++ b/packages/chain-agnostic-permission/src/caip25Permission.ts @@ -26,6 +26,7 @@ import type { import { cloneDeep, isEqual, pick } from 'lodash'; import { CaveatTypes, PermissionKeys } from './constants'; +import { KnownSessionProperties } from './scope/constants'; import { setEthAccounts, setNonSCACaipAccountIdsInCaip25CaveatValue, @@ -632,7 +633,9 @@ export const getCaip25PermissionFromLegacyPermissions = accounts: [], }, }, - sessionProperties: {}, + sessionProperties: { + [KnownSessionProperties.Eip1193Compatible]: true, + }, isMultichainOrigin: false, }; From fb7fa99e1ff6ce587317f93a2efc332fe8ecf85b Mon Sep 17 00:00:00 2001 From: ffmcgee Date: Thu, 7 May 2026 13:53:51 +0200 Subject: [PATCH 5/5] lint fix --- packages/chain-agnostic-permission/src/caip25Permission.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/chain-agnostic-permission/src/caip25Permission.ts b/packages/chain-agnostic-permission/src/caip25Permission.ts index 493b0c49f7..2671fdd226 100644 --- a/packages/chain-agnostic-permission/src/caip25Permission.ts +++ b/packages/chain-agnostic-permission/src/caip25Permission.ts @@ -26,7 +26,6 @@ import type { import { cloneDeep, isEqual, pick } from 'lodash'; import { CaveatTypes, PermissionKeys } from './constants'; -import { KnownSessionProperties } from './scope/constants'; import { setEthAccounts, setNonSCACaipAccountIdsInCaip25CaveatValue, @@ -36,6 +35,7 @@ import { setPermittedEthChainIds, } from './operators/caip-permission-operator-permittedChains'; import { assertIsInternalScopesObject } from './scope/assert'; +import { KnownSessionProperties } from './scope/constants'; import { isSupportedAccount, isSupportedScopeString,