Skip to content

feat: align with updated 7715 standard - #39176

Merged
MoMannn merged 25 commits into
mainfrom
feat--support-7715-discoverability-methods
Jan 21, 2026
Merged

MoMannn merged 25 commits into
mainfrom
feat--support-7715-discoverability-methods

Conversation

@MoMannn

@MoMannn MoMannn commented Jan 12, 2026 •

Copy link
Copy Markdown
Member

Description

This PR updates the codebase to align with API changes in the @metamask/gator-permissions-controller package.

Reason for the change:
The upstream @metamask/gator-permissions-controller package has updated its type definitions and data structures. This PR ensures compatibility with those changes.

Changes included:

  1. Type simplification: Removed the Signer generic parameter from StoredGatorPermissionSanitized<Signer, PermissionTypesWithCustom> → StoredGatorPermissionSanitized<PermissionTypesWithCustom> across all files (selectors, hooks, components, and tests).

  2. Data structure updates:

    • permissionResponse.address → permissionResponse.from (delegator address)
    • decodedPermission.signer.data.address → decodedPermission.to (delegate/recipient address)
    • permissionResponse.signerMeta.delegationManager → permissionResponse.delegationManager (flattened structure)
    • permission.rules → permissionResponse.rules (rules array location change)
  3. New RPC methods: Added support for two new unrestricted methods:

    • wallet_getSupportedExecutionPermissions - Returns supported permission types (filtered by enabled advanced permissions)
    • wallet_getGrantedExecutionPermissions - Returns granted execution permissions

Open in GitHub Codespaces

Changelog

CHANGELOG entry: Added support for wallet_getSupportedExecutionPermissions and wallet_getGrantedExecutionPermissions RPC methods.
CHANGELOG entry: Updated to latest 7715 standart.

Related issues

Depends on: MetaMask/core#7603
Relates to: MetaMask/snap-7715-permissions#249
Requires: MetaMask/core#7634
Requires: MetaMask/snap-7715-permissions#254

Manual testing steps

For manual testing check: MetaMask/snap-7715-permissions#249

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Note

Updates codebase to the 7715/gator-permissions v1 API and introduces execution-permissions query RPCs.

  • Refactors to @metamask/gator-permissions-controller@^1.0.0: remove Signer generic, move permission.rules to permissionResponse.rules, rename permissionResponse.address→from, signerMeta.delegationManager→delegationManager, and decoded permission signer...address→to; applies across hooks, selectors, components, and tests
  • Adds wallet_getSupportedExecutionPermissions (filters by enabled advanced types) and wallet_getGrantedExecutionPermissions; wires through createMetamaskMiddleware and forwards to the permissions kernel snap
  • Bumps related deps (eth-json-rpc-middleware@^23, permissions-kernel-snap@^1.0.0, signature-controller@^39, shield-controller@^5, etc.) and adjusts LavaMoat policies to use the updated middleware pathing
  • Updates PPOM/confirmation tests and stories to the new permission shape; no functional changes beyond API alignment

Written by Cursor Bugbot for commit a522169. This will update automatically on new commits. Configure here.

@github-actions

Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbot metamaskbot added the team-delegation MetaMask Delegation Team label Jan 12, 2026
@metamaskbotv2

metamaskbotv2 Bot commented Jan 12, 2026 •

Copy link
Copy Markdown
Contributor

✨ Files requiring CODEOWNER review ✨

✅ @MetaMask/confirmations (1 files, +4 -16)
  • 📁 app/
    • 📁 scripts/
      • 📁 lib/
        • 📁 ppom/
          • 📄 ppom-util.test.ts +4 -16

👨‍🔧 @MetaMask/core-extension-ux (8 files, +220 -296)
  • 📁 ui/
    • 📁 components/
      • 📁 multichain/
        • 📁 disconnect-permissions-modal/
          • 📄 disconnect-permissions-modal.stories.tsx +4 -8
          • 📄 disconnect-permissions-modal.test.tsx +3 -5
          • 📄 permission-item.tsx +1 -1
          • 📄 types.ts +1 -2
        • 📁 pages/
          • 📁 gator-permissions/
            • 📁 components/
              • 📄 review-gator-permission-item.test.tsx +195 -254
              • 📄 review-gator-permission-item.tsx +12 -13
            • 📁 review-permissions/
              • 📄 review-gator-permissions-page.tsx +2 -9
              • 📄 gator-permissions-page.test.tsx +2 -4

📜 @MetaMask/policy-reviewers (12 files, +36 -228)
  • 📁 lavamoat/
    • 📁 browserify/
      • 📁 beta/
        • 📄 policy.json +3 -45
      • 📁 experimental/
        • 📄 policy.json +3 -45
      • 📁 flask/
        • 📄 policy.json +3 -45
      • 📁 main/
        • 📄 policy.json +3 -45
    • 📁 webpack/
      • 📁 mv2/
        • 📁 beta/
          • 📄 policy.json +4 -10
        • 📁 experimental/
          • 📄 policy.json +4 -10
        • 📁 flask/
          • 📄 policy.json +4 -10
        • 📁 main/
          • 📄 policy.json +4 -10
      • 📁 mv3/
        • 📁 beta/
          • 📄 policy.json +2 -2
        • 📁 experimental/
          • 📄 policy.json +2 -2
        • 📁 flask/
          • 📄 policy.json +2 -2
        • 📁 main/
          • 📄 policy.json +2 -2

Tip

Follow the policy review process outlined in the LavaMoat Policy Review Process doc before expecting an approval from Policy Reviewers.


👨‍🔧 @MetaMask/wallet-integrations (1 files, +4 -0)
  • 📁 app/
    • 📁 scripts/
      • 📁 lib/
        • 📄 createMetamaskMiddleware.ts +4 -0

@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Jan 12, 2026
@metamaskbotv2

metamaskbotv2 Bot commented Jan 12, 2026

Copy link
Copy Markdown
Contributor
Builds ready [e24c689]
UI Startup Metrics (1272 ± 107 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--12721044164610713331440
load--106586113339711251213
domContentLoaded--105885513099711161206
domInteractive--251492192282
firstPaint--1526488098190280
backgroundConnect--21319325410216230
firstReactRender--1493741524
getState--3416110133755
initialActions--102112
loadScripts--8526611113969121004
setupStore--1173241217
numNetworkReqs--171175161165
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--19871726266022020732492
load--1065920142511511141328
domContentLoaded--1051916141211610951318
domInteractive--37181712733110
firstPaint--202711432200236428
backgroundConnect--282208818125255602
firstReactRender--23164542528
getState--18314279567189231
initialActions--103112
loadScripts--83070011811118651086
setupStore--19114782041
numNetworkReqs--58361272064109
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--805656100882860971
load--64757881966699784
domContentLoaded--64257381465692776
domInteractive--2516116212189
firstPaint--1025935952118212
backgroundConnect--2751362840107
firstReactRender--16113341722
getState--321572154265
initialActions--103112
loadScripts--63957180564690773
setupStore--1163861218
numNetworkReqs--171177161165
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13811025216625614881962
load--708615110391726924
domContentLoaded--698607109991708901
domInteractive--39191853337143
firstPaint--1376435865175314
backgroundConnect--95863917848593
firstReactRender--23193532530
getState--16013675061160192
initialActions--104111
loadScripts--694605108889705898
setupStore--17105491844
numNetworkReqs--793622142110152
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--14651088204519715961886
load--1159939172413912361408
domContentLoaded--1159939172413912361407
domInteractive--68322023788146
firstPaint--------
backgroundConnect--762026759137181
firstReactRender--14104351423
getState--1164661124
initialActions--103122
loadScripts--1110926164011411681269
setupStore--174267311237
numNetworkReqs--19984191474
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--24131824437352224524004
load--1237977275739112382560
domContentLoaded--1236976275639112382560
domInteractive--122361078124114365
firstPaint--------
backgroundConnect--145271122218121851
firstReactRender--241588112458
getState--26770832220356781
initialActions--206123
loadScripts--1179941273231612131942
setupStore--1536849211130687
numNetworkReqs--58301954074169
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--15761328232318616441938
load--13241154193112913861560
domContentLoaded--13241153193112913861559
domInteractive--752817836100133
firstPaint--------
backgroundConnect--53202784056153
firstReactRender--15115751623
getState--2082383215115
initialActions--102122
loadScripts--12921111191412313341503
setupStore--184223331450
numNetworkReqs--19983181369
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--28982160755289727824669
load--16341122608170417022957
domContentLoaded--16331122608170417022956
domInteractive--173304715489108554
firstPaint--------
backgroundConnect--2052311883091501180
firstReactRender--2517121122732
getState--28773907233421801
initialActions--203123
loadScripts--15091102605659914992649
setupStore--1288715162124533
numNetworkReqs--58281663390122
19--------
📊 Page Load Benchmark Results

Current Commit: e24c689 | Date: 1/12/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.04s (±38ms) 🟡 | historical mean value: 1.04s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 724ms (±36ms) 🟢 | historical mean value: 729ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 77ms (±10ms) 🟢 | historical mean value: 79ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.04s 38ms 1.01s 1.30s 1.08s 1.30s
domContentLoaded 724ms 36ms 697ms 971ms 757ms 971ms
firstPaint 77ms 10ms 60ms 160ms 84ms 160ms
firstContentfulPaint 77ms 10ms 60ms 160ms 84ms 160ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 744 Bytes (0.01%)
  • ui: 0 Bytes (0%)
  • common: 734 Bytes (0.01%)

github-merge-queue Bot pushed a commit to MetaMask/core that referenced this pull request Jan 14, 2026
## Explanation

### What is the current state of things and why does it need to change?

The `@metamask/eth-json-rpc-middleware` package currently supports two
EIP-7715 methods:
- `wallet_requestExecutionPermissions` — for requesting new execution
permissions
- `wallet_revokeExecutionPermission` — for revoking existing execution
permissions

However, the EIP-7715 specification also defines two additional
"discoverability" methods that allow dApps to query the wallet about its
execution permission capabilities. Without these methods, dApps have no
way to:
1. Discover which permission types the wallet supports and on which
chains
2. Retrieve the list of currently granted (non-revoked) permissions for
the user

### What is the solution your changes offer and how does it work?

This PR adds support for the two missing EIP-7715 discoverability
methods:

- **`wallet_getSupportedExecutionPermissions`** — Returns an object
keyed by permission type (e.g., `native-token-allowance`,
`erc20-token-allowance`) with their supported chain IDs and rule types.
This allows dApps to understand what the wallet can handle before making
permission requests.

- **`wallet_getGrantedExecutionPermissions`** — Returns an array of all
currently active (non-revoked) execution permissions. Each permission
includes chain ID, addresses, permission details, context, dependencies,
and delegation manager information.

The implementation follows the established patterns in this package:
- Each method has a dedicated handler file with a factory function
(`createWallet*Handler`)
- Hook-based architecture allows consumers to provide their own
processing logic
- Superstruct schemas are defined for result types, enabling runtime
validation
- Types and structs are exported from the package index for consumer use

#### EIP-7715 spec alignment for `wallet_requestExecutionPermissions`

The request/response schema has been updated to align with the latest
EIP-7715 specification:

- **Simplified address fields**: Replaced the nested `address` +
`signer: { type, data: { address } }` structure with flat `from`
(optional) and `to` (required) fields
- **Removed `isAdjustmentAllowed` from rules**: This property is only
relevant at the permission level, not individual rules
- **Extended result type**: Added `dependencies` (array of `{ factory,
factoryData }`) and `delegationManager` to the response
- **New export**: Added `PermissionDependency` type export for consumers
- **Consistent address validation**: Updated
`GrantedExecutionPermissionStruct` to use `HexChecksumAddressStruct` for
address fields

### Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?

The handlers don't perform parameter validation since these methods
don't accept parameters (they're pure query methods). This is
intentional and differs from `wallet_requestExecutionPermissions` and
`wallet_revokeExecutionPermission` which validate their params using
Superstruct schemas.

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

- Needed for: MetaMask/metamask-extension#39176
- Related to: MetaMask/snap-7715-permissions#249

## Checklist

- [x] I've updated the test suite for new or updated code as appropriate
- [x] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [x] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs)
- [x] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Implements EIP-7715 discoverability methods and integrates them into
the wallet middleware.
> 
> - New handlers: `createWalletGetSupportedExecutionPermissionsHandler`
and `createWalletGetGrantedExecutionPermissionsHandler` using hook-based
processing and `NoParamsStruct` validation
> - Exports new types and structs from `index.ts`
(`SupportedExecutionPermissionConfig*`, `GrantedExecutionPermission*`,
results)
> - Adds `EmptyArrayStruct`/`NoParamsStruct` in `utils/structs` for "no
params" validation
> - Wires methods into `createWalletMiddleware` via optional
`processGet*` hooks
> - Unit tests for both methods: hook invocation, result passthrough,
missing-hook error, and params validation
> - Changelog updated to note new RPC support
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
8e94f86. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
@github-actions github-actions Bot added size-XL and removed size-S labels Jan 15, 2026
@MoMannn MoMannn changed the title feat: add 7715 discoverability methods feat: align with updated 7715 standard Jan 15, 2026
@MoMannn MoMannn mentioned this pull request Jan 15, 2026
4 tasks
@metamaskbotv2

metamaskbotv2 Bot commented Jan 15, 2026

Copy link
Copy Markdown
Contributor
Builds ready [164f5be]
UI Startup Metrics (1286 ± 110 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--12861066167711013511461
load--1071869137510311361238
domContentLoaded--1065864137010211291229
domInteractive--2716172242291
firstPaint--161641100143182290
backgroundConnect--21619525111221239
firstReactRender--15103441724
getState--371898134164
initialActions--1010113
loadScripts--85766311461019201024
setupStore--1382841425
numNetworkReqs--171175161165
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--18271574256020519372255
load--976843171013910021308
domContentLoaded--96383617031419921296
domInteractive--3216150253194
firstPaint--1826846976218340
backgroundConnect--239183621107213597
firstReactRender--21154542228
getState--18614269257198242
initialActions--104112
loadScripts--77364915021377931088
setupStore--1795291639
numNetworkReqs--59361492557138
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--810670113480867939
load--64859094567665780
domContentLoaded--64258494067660776
domInteractive--2515114202085
firstPaint--1156261375133243
backgroundConnect--266108273891
firstReactRender--17113351928
getState--3416144204062
initialActions--104112
loadScripts--63958293165657773
setupStore--1154261321
numNetworkReqs--171180171166
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13481003195625715121905
load--68659294077699901
domContentLoaded--67658793377684896
domInteractive--34171512833114
firstPaint--1396442677182276
backgroundConnect--77862416722569
firstReactRender--23173842432
getState--15312621917165183
initialActions--102111
loadScripts--67358492476681886
setupStore--1875491942
numNetworkReqs--933823248132213
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13621068189617914791690
load--1087915166011711491289
domContentLoaded--1086909166011711481289
domInteractive--61321653485136
firstPaint--------
backgroundConnect--55202064366165
firstReactRender--1393641323
getState--156132191444
initialActions--103122
loadScripts--1052899163410711081222
setupStore--13482121240
numNetworkReqs--19989191373
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--24441862487659124194033
load--1242951296339012582361
domContentLoaded--1241951296239012582361
domInteractive--1113152593108331
firstPaint--------
backgroundConnect--137211319204110547
firstReactRender--22156582330
getState--27566900238458765
initialActions--207123
loadScripts--1192935275934312331913
setupStore--1276754176112618
numNetworkReqs--59301463176133
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--15891308215118117081932
load--13351105171912514151611
domContentLoaded--13341104171812514151611
domInteractive--842724745116149
firstPaint--------
backgroundConnect--66222624789154
firstReactRender--15112731522
getState--188177241738
initialActions--103122
loadScripts--12921091162210313621475
setupStore--2142823517105
numNetworkReqs--19986201376
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--29151976492571031164400
load--16591235322852317962918
domContentLoaded--16581234322752317962918
domInteractive--128321001152109520
firstPaint--------
backgroundConnect--1782113122511651002
firstReactRender--24169492733
getState--306711212258497824
initialActions--207123
loadScripts--15671213307346016802752
setupStore--12011814176102595
numNetworkReqs--61301673981158
19--------
📊 Page Load Benchmark Results

Current Commit: 164f5be | Date: 1/15/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±43ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 730ms (±41ms) 🟢 | historical mean value: 719ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 78ms (±10ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 43ms 1.02s 1.36s 1.09s 1.36s
domContentLoaded 730ms 41ms 702ms 1.03s 765ms 1.03s
firstPaint 78ms 10ms 60ms 164ms 84ms 164ms
firstContentfulPaint 78ms 10ms 60ms 164ms 84ms 164ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚨 Warning! Bundle size has increased!]
  • background: 744 Bytes (0.01%)
  • ui: -133 Bytes (0%)
  • common: 102 Bytes (0%)

github-merge-queue Bot pushed a commit to MetaMask/core that referenced this pull request Jan 15, 2026
## Explanation

Releases: 
- `@metamask/gator-permissions-controller@1.0.0`
- `@metamask/eth-json-rpc-middleware@23.0.0`
- `@metamask/signature-controller@38.1.0`

Both `gator-permissions-controller` and `eth-json-rpc-middleware`
produce breaking changes to align with latest eip 7715 specs.

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->

Required by: MetaMask/metamask-extension#39176

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them


<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> Releases coordinated majors with EIP‑7715 updates and dependency
alignments.
> 
> - **BREAKING:** `@metamask/eth-json-rpc-middleware@23.0.0` updates
`wallet_requestExecutionPermissions` to 7715 spec; adds
`wallet_getSupportedExecutionPermissions` and
`wallet_getGrantedExecutionPermissions`
> - **BREAKING:** `@metamask/gator-permissions-controller@1.0.0` updates
core types to 7715 revisions
> - **BREAKING:** `@metamask/shield-controller@5.0.0` now depends on
`@metamask/signature-controller@39.0.0`; `decodedPermission` shape in
signature requests changes
> - `@metamask/signature-controller@39.0.0` bumps to use
`gator-permissions-controller@1.0.0`
> - `@metamask/network-controller` bumps dependency to
`eth-json-rpc-middleware@^23.0.0` and updates changelog (notes new
`ConnectivityController:getState` requirement)
> - Bumps monorepo `version` to `751.0.0` and updates lockfile
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
e0a1409. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Idris Bowman <34751375+V00D00-child@users.noreply.github.com>
…into feat--support-7715-discoverability-methods
@socket-security

socket-security Bot commented Jan 16, 2026 •

Copy link
Copy Markdown

@socket-security

socket-security Bot commented Jan 16, 2026 •

Copy link
Copy Markdown

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

View full report

@metamaskbotv2

metamaskbotv2 Bot commented Jan 21, 2026

Copy link
Copy Markdown
Contributor
Builds ready [509370a]
UI Startup Metrics (1332 ± 107 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13321073167310713941504
load--110889714309811671275
domContentLoaded--110189114239811591270
domInteractive--2816110202490
firstPaint--181691135177193299
backgroundConnect--22921229813233252
firstReactRender--17103761830
getState--361984124167
initialActions--104113
loadScripts--8806721205989401048
setupStore--1364061524
numNetworkReqs--171171141162
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--23181658621392823064811
load--1070924161312211361320
domContentLoaded--1055916160612211151289
domInteractive--3418169233588
firstPaint--1637636370222312
backgroundConnect--45821432035044611567
firstReactRender--23164972542
getState--2041331090134201532
initialActions--107112
loadScripts--83070013741148681047
setupStore--20686102138
numNetworkReqs--72252093082146
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--------
load--------
domContentLoaded--------
domInteractive--------
firstPaint--------
backgroundConnect--------
firstReactRender--------
getState--------
initialActions--------
loadScripts--------
setupStore--------
numNetworkReqs--------
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--------
load--------
domContentLoaded--------
domInteractive--------
firstPaint--------
backgroundConnect--------
firstReactRender--------
getState--------
initialActions--------
loadScripts--------
setupStore--------
numNetworkReqs--------
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--14761156207819115901839
load--1186981171013712691438
domContentLoaded--1185981171013712641438
domInteractive--843331450100186
firstPaint--------
backgroundConnect--652120550108168
firstReactRender--14104051423
getState--156207221342
initialActions--104122
loadScripts--1147967168312212031385
setupStore--145105161346
numNetworkReqs--19979181372
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--24411841487143325743168
load--12211031263924912661499
domContentLoaded--12211031263924912661499
domInteractive--13937981115145294
firstPaint--------
backgroundConnect--227241935276237676
firstReactRender--23145682436
getState--26153827213363700
initialActions--214123
loadScripts--11851002242423212241464
setupStore--13613727154140534
numNetworkReqs--65281452680117
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--------
load--------
domContentLoaded--------
domInteractive--------
firstPaint--------
backgroundConnect--------
firstReactRender--------
getState--------
initialActions--------
loadScripts--------
setupStore--------
numNetworkReqs--------
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--------
load--------
domContentLoaded--------
domInteractive--------
firstPaint--------
backgroundConnect--------
firstReactRender--------
getState--------
initialActions--------
loadScripts--------
setupStore--------
numNetworkReqs--------
19--------
📊 Page Load Benchmark Results

Current Commit: 509370a | Date: 1/21/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 979ms (±66ms) 🟢 | historical mean value: 1.03s ⬇️ (historical data)
  • domContentLoaded-> current mean value: 682ms (±62ms) 🟢 | historical mean value: 717ms ⬇️ (historical data)
  • firstContentfulPaint-> current mean value: 74ms (±11ms) 🟢 | historical mean value: 77ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 979ms 66ms 945ms 1.28s 1.19s 1.28s
domContentLoaded 682ms 62ms 653ms 957ms 884ms 957ms
firstPaint 74ms 11ms 64ms 172ms 84ms 172ms
firstContentfulPaint 74ms 11ms 64ms 172ms 84ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -63.6 KiB (-1.22%)
  • ui: -86 Bytes (0%)
  • common: -37.82 KiB (-0.41%)

@metamaskbot

Copy link
Copy Markdown
Collaborator

Policies updated.
👀 Please review the diff for suspicious new powers.

🧠 Learn how: https://lavamoat.github.io/guides/policy-diff/#what-to-look-for-when-reviewing-a-policy-diff

MajorLift
MajorLift previously approved these changes Jan 21, 2026
ameliejyc
ameliejyc previously approved these changes Jan 21, 2026
@metamaskbotv2

metamaskbotv2 Bot commented Jan 21, 2026

Copy link
Copy Markdown
Contributor
Builds ready [fb72537]
UI Startup Metrics (1343 ± 114 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13431050170511414161549
load--1125901140710011791285
domContentLoaded--1119898140410011731265
domInteractive--3016108222490
firstPaint--181691243187197339
backgroundConnect--22821126211233254
firstReactRender--18114162227
getState--4220113165073
initialActions--109113
loadScripts--8986841167989561036
setupStore--1474061526
numNetworkReqs--171168151161
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--259616038987142126145694
load--1095913183316511961415
domContentLoaded--1079900182116411861405
domInteractive--34181512535103
firstPaint--2237614252692261321
backgroundConnect--58021042387605142588
firstReactRender--22175052434
getState--2701295549551209562
initialActions--103111
loadScripts--85669815591559601132
setupStore--1975692241
numNetworkReqs--81402434189204
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--8246741116918601028
load--66459190373699819
domContentLoaded--65958789772692812
domInteractive--2615116202182
firstPaint--11461807105119265
backgroundConnect--235129253165
firstReactRender--16113041826
getState--3615121184368
initialActions--104112
loadScripts--65658489471689807
setupStore--14644101539
numNetworkReqs--171181171167
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13691048206223614901920
load--734640118286765900
domContentLoaded--723633117485749894
domInteractive--40202213138106
firstPaint--1557240476193304
backgroundConnect--45864910828153
firstReactRender--24194032530
getState--15513522214162180
initialActions--102011
loadScripts--720631116584746884
setupStore--20771112044
numNetworkReqs--81382433691156
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--14251168190113915121634
load--1151983150410312261325
domContentLoaded--1150983150410312251325
domInteractive--783225647104147
firstPaint--------
backgroundConnect--60202144580161
firstReactRender--14104761425
getState--137151151332
initialActions--105122
loadScripts--111095914869211621274
setupStore--185201251551
numNetworkReqs--19980171473
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--25421962533659325883958
load--1237996255324813091757
domContentLoaded--1236995255324813081756
domInteractive--1393545498161345
firstPaint--------
backgroundConnect--2453021023582291148
firstReactRender--23165782454
getState--26763845205413700
initialActions--209123
loadScripts--1182972243223012511505
setupStore--13116819151141509
numNetworkReqs--70331432479123
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--16391342229818417232083
load--13711192188711814311603
domContentLoaded--13711192188711814311603
domInteractive--962822546130159
firstPaint--------
backgroundConnect--62232184375154
firstReactRender--15115771521
getState--2181533115122
initialActions--103122
loadScripts--13301155185810513761534
setupStore--2543164713128
numNetworkReqs--18979161363
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--28782059888788129484286
load--15201246382738715662443
domContentLoaded--15191245382738715622443
domInteractive--143331175132193306
firstPaint--------
backgroundConnect--3774362426964381195
firstReactRender--2316126112530
getState--26466912221380747
initialActions--213122
loadScripts--14601159375033714992026
setupStore--135111267182133578
numNetworkReqs--71341632481111
19--------
📊 Page Load Benchmark Results

Current Commit: fb72537 | Date: 1/21/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.08s (±73ms) 🟡 | historical mean value: 1.03s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 758ms (±71ms) 🟢 | historical mean value: 717ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 81ms (±10ms) 🟢 | historical mean value: 77ms ⬆️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.08s 73ms 1.03s 1.36s 1.31s 1.36s
domContentLoaded 758ms 71ms 715ms 1.03s 974ms 1.03s
firstPaint 81ms 10ms 68ms 172ms 92ms 172ms
firstContentfulPaint 81ms 10ms 68ms 172ms 92ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -63.6 KiB (-1.22%)
  • ui: -86 Bytes (0%)
  • common: -37.82 KiB (-0.41%)

@MoMannn
MoMannn dismissed stale reviews from ameliejyc and MajorLift via a522169 January 21, 2026 16:13
@MoMannn

MoMannn commented Jan 21, 2026

Copy link
Copy Markdown
Member Author

@metamaskbot update-policies

@metamaskbot

Copy link
Copy Markdown
Collaborator

No policy changes

@jeffsmale90
jeffsmale90 requested a review from ameliejyc January 21, 2026 16:35
@metamaskbotv2

metamaskbotv2 Bot commented Jan 21, 2026

Copy link
Copy Markdown
Contributor
Builds ready [a522169]
UI Startup Metrics (1318 ± 94 ms)
PlatformBuildTypePageMetricTest Title (ms)Persona (ms)Mean (ms)Min (ms)Max (ms)Std Dev (ms)P 75 (ms)P 95 (ms)
ChromeBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--1318108716099413761446
load--110891413898711611229
domContentLoaded--110290813808611571215
domInteractive--2817108212488
firstPaint--162671173145190317
backgroundConnect--23020728613234255
firstReactRender--17104261930
getState--3717123164268
initialActions--103112
loadScripts--878687114486935988
setupStore--1353241420
numNetworkReqs--181179171167
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--327215788173159744226498
load--1144949142112112461380
domContentLoaded--1126937139411912171361
domInteractive--37201342536110
firstPaint--206841286160238359
backgroundConnect--825223310184712192731
firstReactRender--26176372739
getState--31113723153642531112
initialActions--104111
loadScripts--89571811741139631116
setupStore--247177212757
numNetworkReqs--914623440100203
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--8346781124878761031
load--67359385066716808
domContentLoaded--66858884265712803
domInteractive--241599182077
firstPaint--1146335462163228
backgroundConnect--245136282988
firstReactRender--16104061929
getState--3215133193959
initialActions--105112
loadScripts--66558683364710795
setupStore--1264271324
numNetworkReqs--171173171168
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13171048254725514241900
load--704623104077708889
domContentLoaded--693615103577700883
domInteractive--40202043238118
firstPaint--1487336768181322
backgroundConnect--53763813419513
firstReactRender--22173132427
getState--15013221115155181
initialActions--105112
loadScripts--690613102776698875
setupStore--201053102046
numNetworkReqs--93392463799165
19--------
FirefoxBrowserifyStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--13571064196418114491767
load--1098912173714711481378
domContentLoaded--1097911173714711481377
domInteractive--68312073992141
firstPaint--------
backgroundConnect--49191964247152
firstReactRender--13104651320
getState--1169291118
initialActions--102012
loadScripts--1066897157312911161268
setupStore--143149181145
numNetworkReqs--18976161369
19--------
BrowserifyPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--27852016823674930583931
load--13541051599251714171858
domContentLoaded--13541051599151714161857
domInteractive--165491157147183452
firstPaint--------
backgroundConnect--4502653516356691333
firstReactRender--25167792635
getState--24354930166335645
initialActions--203123
loadScripts--12641029224821313621616
setupStore--129211536177148385
numNetworkReqs--76311622385126
19--------
WebpackStandard Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--15351247219316115981854
load--13111123157610613851511
domContentLoaded--13111123157610613851511
domInteractive--852825845121146
firstPaint--------
backgroundConnect--52182073851146
firstReactRender--14115241418
getState--1981813115118
initialActions--102012
loadScripts--1278107315099413481479
setupStore--137118161232
numNetworkReqs--18981161369
19--------
WebpackPower User Home0--------
1--------
2--------
3--------
4--------
5--------
6--------
7--------
8--------
9--------
10--------
11--------
12--------
13--------
14--------
15--------
16--------
17--------
18--------
uiStartup--29732123866498230624780
load--16041208654473215862693
domContentLoaded--16041208654473215862693
domInteractive--163401278158205364
firstPaint--------
backgroundConnect--3953816303966911239
firstReactRender--23166482632
getState--25271865192357661
initialActions--213123
loadScripts--15671185649072715392645
setupStore--11717697128159373
numNetworkReqs--76301813088158
19--------
📊 Page Load Benchmark Results

Current Commit: a522169 | Date: 1/21/2026

📄 Localhost MetaMask Test Dapp

Samples: 100

Summary

  • pageLoadTime-> current mean value: 1.05s (±72ms) 🟡 | historical mean value: 1.04s ⬆️ (historical data)
  • domContentLoaded-> current mean value: 734ms (±69ms) 🟢 | historical mean value: 728ms ⬆️ (historical data)
  • firstContentfulPaint-> current mean value: 75ms (±12ms) 🟢 | historical mean value: 78ms ⬇️ (historical data)

📈 Detailed Results

Metric Mean Std Dev Min Max P95 P99
pageLoadTime 1.05s 72ms 1.01s 1.32s 1.27s 1.32s
domContentLoaded 734ms 69ms 698ms 996ms 946ms 996ms
firstPaint 75ms 12ms 56ms 172ms 88ms 172ms
firstContentfulPaint 75ms 12ms 56ms 172ms 88ms 172ms
largestContentfulPaint 0ms 0ms 0ms 0ms 0ms 0ms
Bundle size diffs [🚀 Bundle size reduced!]
  • background: -63.6 KiB (-1.22%)
  • ui: -82 Bytes (0%)
  • common: -37.82 KiB (-0.41%)

@MoMannn
MoMannn added this pull request to the merge queue Jan 21, 2026
@github-project-automation github-project-automation Bot moved this from Has approvals, needs CODEOWNER to Review finalised - Ready to be merged in PR review queue Jan 21, 2026
Merged via the queue into main with commit 11b8756 Jan 21, 2026
187 of 188 checks passed

This branch was previously deployed

1 inactive deployment
pr-comment — a5221694 Deployed Jan 21, 2026 by MoMannn via Publish prerelease / Publish prerelease #114456
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

INVALID-PR-TEMPLATE PR's body doesn't match template release-13.16.0 Issue or pull request that will be included in release 13.16.0 size-XL team-delegation MetaMask Delegation Team

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

7 participants