Skip to content

fix(assets-controller): implement spam asset cleanup functionality - #9973

Open
Prithpal-Sooriya wants to merge 26 commits into
mainfrom
fix(assets-controller)/add-asset-cleanup-process-on-unlock
Open

fix(assets-controller): implement spam asset cleanup functionality#9973
Prithpal-Sooriya wants to merge 26 commits into
mainfrom
fix(assets-controller)/add-asset-cleanup-process-on-unlock

Conversation

@Prithpal-Sooriya

@Prithpal-Sooriya Prithpal-Sooriya commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Explanation

Adds spam cleanup for users. This is additional filtering to ensure we are protected if any external system adds in spam (WS, API, Migration).

This is because our external sources can fail and add in spam:

  • API filters can loosen, and add in spam tokens.
  • WS has no filtering right now, so airdrops are added to the wallet.

This safeguards ourselves by adding additional cleanup on startup/unlock. We need a longer term discussion & decision with Assets team to highlight this cleanup issue and building a trustless system.

Builds:

Code Walkthrough:
https://www.loom.com/share/7c60194c8be44a6c8d1e7ee8dc559ae7

References

https://consensyssoftware.atlassian.net/browse/ASSETS-3905

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
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Medium Risk
Unlock-time logic mutates persisted assetsInfo and balances from Token API heuristics, so misclassification could hide legitimate ERC-20s until the flag is disabled or lists update.

Overview
AssetsController now runs a spam-token sweep when the wallet unlocks, before normal asset tracking resumes. The flow calls cleanSpamAssets, which queries MetaMask’s Token/Tokens APIs for suggested occurrence floors and per-token occurrence counts, then drops sweepable ERC-20s that sit below the chain floor from assetsInfo and assetsBalance while leaving natives, non-EVM assets, default-tracked tokens (e.g. mUSD), and customAssets alone.

The behavior is off by default unless remote flags set assetsUnifyState.useUnlockCleanup to true, and it also requires basic functionality and an unlocked keyring. Failures are logged or reported via captureException without blocking unlock; state is left unchanged if the API fails.

The PR adds isUnlockCleanupEnabled, wires #runSpamCleanup into the KeyringController:unlock subscription, documents the fix in the changelog, and adds nock-based HTTP tests (unit, controller E2E, and integration against captured real API responses), plus expanded mock messenger helpers for these scenarios.

Reviewed by Cursor Bugbot for commit db4b816. Bugbot is set up for automated code reviews on this repo. Configure here.

Adds spam cleanup for users. This is because our external sources can fail and add in spam:
- API filters can loosen, and add in spam tokens.
- WS has no filtering right now, so airdrops are added to the wallet.

This safeguards ourselves by adding additional cleanup on startup/unlock. We need a longer term discussion & decision with Assets team to highlight this cleanup issue and building a trustless system.
@Prithpal-Sooriya

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@8.0.0-preview-4165cebcf
@metamask-previews/accounts-controller@39.1.0-preview-4165cebcf
@metamask-previews/address-book-controller@7.1.2-preview-4165cebcf
@metamask-previews/ai-controllers@0.8.0-preview-4165cebcf
@metamask-previews/analytics-controller@2.0.0-preview-4165cebcf
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-4165cebcf
@metamask-previews/announcement-controller@8.1.0-preview-4165cebcf
@metamask-previews/app-metadata-controller@2.0.1-preview-4165cebcf
@metamask-previews/approval-controller@9.0.2-preview-4165cebcf
@metamask-previews/assets-controller@14.0.1-preview-4165cebcf
@metamask-previews/assets-controllers@111.1.2-preview-4165cebcf
@metamask-previews/authenticated-user-storage@3.0.1-preview-4165cebcf
@metamask-previews/base-controller@9.1.0-preview-4165cebcf
@metamask-previews/base-data-service@0.1.3-preview-4165cebcf
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-4165cebcf
@metamask-previews/bridge-controller@79.3.0-preview-4165cebcf
@metamask-previews/bridge-status-controller@75.2.0-preview-4165cebcf
@metamask-previews/build-utils@3.0.4-preview-4165cebcf
@metamask-previews/chain-agnostic-permission@1.7.0-preview-4165cebcf
@metamask-previews/chomp-api-service@4.0.0-preview-4165cebcf
@metamask-previews/claims-controller@0.6.0-preview-4165cebcf
@metamask-previews/client-controller@1.0.1-preview-4165cebcf
@metamask-previews/client-utils@2.1.1-preview-4165cebcf
@metamask-previews/compliance-controller@2.1.0-preview-4165cebcf
@metamask-previews/composable-controller@12.0.1-preview-4165cebcf
@metamask-previews/config-registry-controller@3.0.0-preview-4165cebcf
@metamask-previews/connectivity-controller@0.3.0-preview-4165cebcf
@metamask-previews/controller-utils@12.3.0-preview-4165cebcf
@metamask-previews/core-backend@9.0.0-preview-4165cebcf
@metamask-previews/delegation-controller@3.0.2-preview-4165cebcf
@metamask-previews/earn-controller@12.2.5-preview-4165cebcf
@metamask-previews/eip-5792-middleware@3.0.5-preview-4165cebcf
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-4165cebcf
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-4165cebcf
@metamask-previews/eth-block-tracker@15.0.1-preview-4165cebcf
@metamask-previews/eth-json-rpc-middleware@24.0.0-preview-4165cebcf
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-4165cebcf
@metamask-previews/foundryup@1.0.1-preview-4165cebcf
@metamask-previews/gas-fee-controller@26.3.1-preview-4165cebcf
@metamask-previews/gator-permissions-controller@5.0.1-preview-4165cebcf
@metamask-previews/geolocation-controller@1.0.0-preview-4165cebcf
@metamask-previews/java-tron-up@1.0.0-preview-4165cebcf
@metamask-previews/json-rpc-engine@10.5.0-preview-4165cebcf
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-4165cebcf
@metamask-previews/keyring-controller@27.1.1-preview-4165cebcf
@metamask-previews/kyc-controller@0.0.0-preview-4165cebcf
@metamask-previews/local-node-utils@1.0.0-preview-4165cebcf
@metamask-previews/logging-controller@9.0.0-preview-4165cebcf
@metamask-previews/message-manager@14.1.2-preview-4165cebcf
@metamask-previews/messenger@2.0.0-preview-4165cebcf
@metamask-previews/messenger-cli@0.2.0-preview-4165cebcf
@metamask-previews/money-account-api-data-service@0.4.0-preview-4165cebcf
@metamask-previews/money-account-balance-service@2.4.1-preview-4165cebcf
@metamask-previews/money-account-controller@1.0.0-preview-4165cebcf
@metamask-previews/money-account-upgrade-controller@3.0.1-preview-4165cebcf
@metamask-previews/money-account-utils@1.1.0-preview-4165cebcf
@metamask-previews/multichain-account-service@13.0.2-preview-4165cebcf
@metamask-previews/multichain-api-middleware@4.0.2-preview-4165cebcf
@metamask-previews/multichain-network-controller@3.2.3-preview-4165cebcf
@metamask-previews/multichain-transactions-controller@7.1.2-preview-4165cebcf
@metamask-previews/name-controller@9.1.2-preview-4165cebcf
@metamask-previews/network-connection-banner-controller@0.2.0-preview-4165cebcf
@metamask-previews/network-controller@35.0.1-preview-4165cebcf
@metamask-previews/network-enablement-controller@6.0.4-preview-4165cebcf
@metamask-previews/notification-services-controller@26.0.1-preview-4165cebcf
@metamask-previews/passkey-controller@3.1.0-preview-4165cebcf
@metamask-previews/permission-controller@13.1.1-preview-4165cebcf
@metamask-previews/permission-log-controller@5.1.0-preview-4165cebcf
@metamask-previews/perps-controller@12.2.0-preview-4165cebcf
@metamask-previews/phishing-controller@17.4.0-preview-4165cebcf
@metamask-previews/platform-api-docs@0.0.0-preview-4165cebcf
@metamask-previews/polling-controller@16.0.9-preview-4165cebcf
@metamask-previews/preferences-controller@23.1.0-preview-4165cebcf
@metamask-previews/profile-metrics-controller@4.0.3-preview-4165cebcf
@metamask-previews/profile-sync-controller@29.0.0-preview-4165cebcf
@metamask-previews/ramps-controller@20.0.0-preview-4165cebcf
@metamask-previews/rate-limit-controller@7.0.1-preview-4165cebcf
@metamask-previews/react-data-query@0.2.2-preview-4165cebcf
@metamask-previews/remote-feature-flag-controller@6.0.0-preview-4165cebcf
@metamask-previews/sample-controllers@5.0.4-preview-4165cebcf
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-4165cebcf
@metamask-previews/selected-network-controller@26.1.6-preview-4165cebcf
@metamask-previews/sentinel-api-service@1.0.0-preview-4165cebcf
@metamask-previews/shield-controller@6.0.0-preview-4165cebcf
@metamask-previews/signature-controller@39.2.9-preview-4165cebcf
@metamask-previews/smart-transactions-controller@25.1.0-preview-4165cebcf
@metamask-previews/snap-account-service@2.1.2-preview-4165cebcf
@metamask-previews/social-controllers@2.7.1-preview-4165cebcf
@metamask-previews/solana-test-validator-up@1.0.0-preview-4165cebcf
@metamask-previews/stellar-quickstart-up@0.0.0-preview-4165cebcf
@metamask-previews/storage-service@1.0.2-preview-4165cebcf
@metamask-previews/subscription-controller@8.0.0-preview-4165cebcf
@metamask-previews/transaction-controller@69.6.0-preview-4165cebcf
@metamask-previews/transaction-pay-controller@26.4.1-preview-4165cebcf
@metamask-previews/user-operation-controller@41.2.8-preview-4165cebcf
@metamask-previews/wallet@12.0.1-preview-4165cebcf
@metamask-previews/wallet-cli@0.0.0-preview-4165cebcf

…)/add-asset-cleanup-process-on-unlock

Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	packages/assets-controller/CHANGELOG.md
@Prithpal-Sooriya

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@Prithpal-Sooriya

Copy link
Copy Markdown
Contributor Author

@cursor /babysit fix CI

@cursor

cursor Bot commented Aug 26, 2026

Copy link
Copy Markdown

Taking a look!

Open in Web Open in Cursor 

- Add unit tests for cleanSpamAssets covering candidate filtering,
  spam removal, API failures, and occurrence floor fallback
- Add AssetsController integration tests for unlock-triggered cleanup
- Fix import order in healAssetsInfoMetadata.ts for lint:misc:check

Co-authored-by: Prithpal Sooriya <prithpal.sooriya@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@8.0.0-preview-f8cb83dcd
@metamask-previews/accounts-controller@39.1.1-preview-f8cb83dcd
@metamask-previews/address-book-controller@7.1.2-preview-f8cb83dcd
@metamask-previews/ai-controllers@0.8.0-preview-f8cb83dcd
@metamask-previews/analytics-controller@2.0.0-preview-f8cb83dcd
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-f8cb83dcd
@metamask-previews/announcement-controller@8.1.0-preview-f8cb83dcd
@metamask-previews/app-metadata-controller@2.0.1-preview-f8cb83dcd
@metamask-previews/approval-controller@9.0.2-preview-f8cb83dcd
@metamask-previews/assets-controller@14.0.2-preview-f8cb83dcd
@metamask-previews/assets-controllers@111.1.3-preview-f8cb83dcd
@metamask-previews/authenticated-user-storage@3.0.2-preview-f8cb83dcd
@metamask-previews/base-controller@9.1.0-preview-f8cb83dcd
@metamask-previews/base-data-service@1.0.0-preview-f8cb83dcd
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-f8cb83dcd
@metamask-previews/bridge-controller@79.3.1-preview-f8cb83dcd
@metamask-previews/bridge-status-controller@75.2.1-preview-f8cb83dcd
@metamask-previews/build-utils@3.0.4-preview-f8cb83dcd
@metamask-previews/chain-agnostic-permission@1.7.0-preview-f8cb83dcd
@metamask-previews/chomp-api-service@4.0.1-preview-f8cb83dcd
@metamask-previews/claims-controller@0.6.1-preview-f8cb83dcd
@metamask-previews/client-controller@1.0.1-preview-f8cb83dcd
@metamask-previews/client-utils@2.1.1-preview-f8cb83dcd
@metamask-previews/compliance-controller@2.1.0-preview-f8cb83dcd
@metamask-previews/composable-controller@12.0.1-preview-f8cb83dcd
@metamask-previews/config-registry-controller@3.1.0-preview-f8cb83dcd
@metamask-previews/connectivity-controller@0.3.0-preview-f8cb83dcd
@metamask-previews/controller-utils@12.3.0-preview-f8cb83dcd
@metamask-previews/core-backend@9.0.0-preview-f8cb83dcd
@metamask-previews/delegation-controller@3.0.2-preview-f8cb83dcd
@metamask-previews/earn-controller@12.2.6-preview-f8cb83dcd
@metamask-previews/eip-5792-middleware@3.0.5-preview-f8cb83dcd
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-f8cb83dcd
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-f8cb83dcd
@metamask-previews/eth-block-tracker@15.0.1-preview-f8cb83dcd
@metamask-previews/eth-json-rpc-middleware@24.0.1-preview-f8cb83dcd
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-f8cb83dcd
@metamask-previews/foundryup@1.0.1-preview-f8cb83dcd
@metamask-previews/gas-fee-controller@26.3.2-preview-f8cb83dcd
@metamask-previews/gator-permissions-controller@5.0.2-preview-f8cb83dcd
@metamask-previews/geolocation-controller@1.0.0-preview-f8cb83dcd
@metamask-previews/java-tron-up@1.0.0-preview-f8cb83dcd
@metamask-previews/json-rpc-engine@10.5.0-preview-f8cb83dcd
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-f8cb83dcd
@metamask-previews/keyring-controller@27.1.1-preview-f8cb83dcd
@metamask-previews/kyc-controller@0.0.0-preview-f8cb83dcd
@metamask-previews/local-node-utils@1.0.0-preview-f8cb83dcd
@metamask-previews/logging-controller@9.0.0-preview-f8cb83dcd
@metamask-previews/message-manager@14.1.2-preview-f8cb83dcd
@metamask-previews/messenger@2.0.0-preview-f8cb83dcd
@metamask-previews/messenger-cli@0.2.0-preview-f8cb83dcd
@metamask-previews/money-account-api-data-service@0.4.1-preview-f8cb83dcd
@metamask-previews/money-account-balance-service@2.4.3-preview-f8cb83dcd
@metamask-previews/money-account-controller@1.0.0-preview-f8cb83dcd
@metamask-previews/money-account-upgrade-controller@3.0.2-preview-f8cb83dcd
@metamask-previews/money-account-utils@1.1.0-preview-f8cb83dcd
@metamask-previews/multichain-account-service@13.0.2-preview-f8cb83dcd
@metamask-previews/multichain-api-middleware@4.0.3-preview-f8cb83dcd
@metamask-previews/multichain-network-controller@3.2.4-preview-f8cb83dcd
@metamask-previews/multichain-transactions-controller@7.1.2-preview-f8cb83dcd
@metamask-previews/name-controller@9.1.2-preview-f8cb83dcd
@metamask-previews/network-connection-banner-controller@0.2.1-preview-f8cb83dcd
@metamask-previews/network-controller@36.0.0-preview-f8cb83dcd
@metamask-previews/network-enablement-controller@6.0.5-preview-f8cb83dcd
@metamask-previews/notification-services-controller@26.0.1-preview-f8cb83dcd
@metamask-previews/passkey-controller@3.1.0-preview-f8cb83dcd
@metamask-previews/permission-controller@13.1.1-preview-f8cb83dcd
@metamask-previews/permission-log-controller@5.1.0-preview-f8cb83dcd
@metamask-previews/perps-controller@12.2.0-preview-f8cb83dcd
@metamask-previews/phishing-controller@17.4.0-preview-f8cb83dcd
@metamask-previews/platform-api-docs@0.0.0-preview-f8cb83dcd
@metamask-previews/polling-controller@16.0.9-preview-f8cb83dcd
@metamask-previews/preferences-controller@23.1.0-preview-f8cb83dcd
@metamask-previews/profile-metrics-controller@4.0.3-preview-f8cb83dcd
@metamask-previews/profile-sync-controller@29.0.0-preview-f8cb83dcd
@metamask-previews/ramps-controller@20.0.0-preview-f8cb83dcd
@metamask-previews/rate-limit-controller@7.0.1-preview-f8cb83dcd
@metamask-previews/react-data-query@1.0.0-preview-f8cb83dcd
@metamask-previews/remote-feature-flag-controller@6.0.0-preview-f8cb83dcd
@metamask-previews/sample-controllers@5.0.6-preview-f8cb83dcd
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-f8cb83dcd
@metamask-previews/selected-network-controller@26.1.7-preview-f8cb83dcd
@metamask-previews/sentinel-api-service@1.0.1-preview-f8cb83dcd
@metamask-previews/shield-controller@6.0.1-preview-f8cb83dcd
@metamask-previews/signature-controller@39.2.10-preview-f8cb83dcd
@metamask-previews/smart-transactions-controller@25.1.1-preview-f8cb83dcd
@metamask-previews/snap-account-service@2.1.2-preview-f8cb83dcd
@metamask-previews/social-controllers@2.7.2-preview-f8cb83dcd
@metamask-previews/solana-test-validator-up@1.0.0-preview-f8cb83dcd
@metamask-previews/stellar-quickstart-up@0.0.0-preview-f8cb83dcd
@metamask-previews/storage-service@1.0.2-preview-f8cb83dcd
@metamask-previews/subscription-controller@8.0.1-preview-f8cb83dcd
@metamask-previews/transaction-controller@69.6.1-preview-f8cb83dcd
@metamask-previews/transaction-pay-controller@27.0.0-preview-f8cb83dcd
@metamask-previews/user-operation-controller@41.2.9-preview-f8cb83dcd
@metamask-previews/wallet@12.0.2-preview-f8cb83dcd
@metamask-previews/wallet-cli@0.0.0-preview-f8cb83dcd

cursoragent and others added 3 commits August 26, 2026 12:42
Co-authored-by: Prithpal Sooriya <prithpal.sooriya@gmail.com>
- Unit test via healAssetsInfoMetadata.test.ts
- More ingrained integration test via AssetsController.spam-cleanup.test.ts

Also created some test mocks and utils via __fixtures__
There were small changes made to mocks... meh not a big deal.
@Prithpal-Sooriya
Prithpal-Sooriya marked this pull request as ready for review August 26, 2026 14:35
@Prithpal-Sooriya
Prithpal-Sooriya requested review from a team as code owners August 26, 2026 14:35
Comment thread packages/assets-controller/src/AssetsController.ts
@cursor
cursor Bot requested review from Kriys94 and salimtb August 26, 2026 14:38
cursoragent and others added 3 commits August 26, 2026 14:43
Co-authored-by: Prithpal Sooriya <prithpal.sooriya@gmail.com>
… cleanup

The previous implementation of #runSpamCleanup would replace the assetsInfo and assetsBalance state wholesale with a snapshot taken before awaiting the Token API. This caused any legitimate updates to those state slices that occurred concurrently to be dropped.

This commit updates the logic to compute the set of removed spam assets and delete only those specific assets from the current state, preserving any concurrent additions or modifications.

Co-authored-by: Cursor <cursoragent@cursor.com>
…ock' of github.com:MetaMask/core into fix(assets-controller)/add-asset-cleanup-process-on-unlock
Comment thread packages/assets-controller/src/AssetsController.ts Outdated
Prithpal-Sooriya and others added 6 commits August 26, 2026 16:42
- Re-apply selective spam deletion in #runSpamCleanup so concurrent
  state updates during the Token API await are not overwritten
- Bump eslint suppression count for AssetsController stateChange usage
- Fix formatting in spam-cleanup test file

Co-authored-by: Prithpal Sooriya <prithpal.sooriya@gmail.com>
…date

Mutate the Immer draft in place with type assertions instead of
spreading assetsInfo/assetsBalance, matching the pattern used in
handleAssetsUpdate.

Co-authored-by: Prithpal Sooriya <prithpal.sooriya@gmail.com>
This was an edge-case caught from E2E tests on clients.
…ock' of github.com:MetaMask/core into fix(assets-controller)/add-asset-cleanup-process-on-unlock
Comment thread packages/assets-controller/src/AssetsController.ts Outdated
Trigger spam cleanup when UI, keyring, and account-tree preconditions are
first satisfied, not only on unlock. Update spam-cleanup tests to activate
the full lifecycle and relax assertions affected by concurrent tracking.

Co-authored-by: Prithpal Sooriya <prithpal.sooriya@gmail.com>
Comment thread packages/assets-controller/src/AssetsController.ts Outdated

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit c2d9d46. Configure here.

Comment thread packages/assets-controller/src/AssetsController.ts
Comment thread packages/assets-controller/src/AssetsController.ts
@Prithpal-Sooriya

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@8.0.0-preview-e68ab1498
@metamask-previews/accounts-controller@39.1.1-preview-e68ab1498
@metamask-previews/address-book-controller@7.1.2-preview-e68ab1498
@metamask-previews/ai-controllers@0.8.0-preview-e68ab1498
@metamask-previews/analytics-controller@2.0.0-preview-e68ab1498
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-e68ab1498
@metamask-previews/announcement-controller@8.1.0-preview-e68ab1498
@metamask-previews/app-metadata-controller@2.0.1-preview-e68ab1498
@metamask-previews/approval-controller@9.0.2-preview-e68ab1498
@metamask-previews/assets-controller@14.0.2-preview-e68ab1498
@metamask-previews/assets-controllers@111.1.3-preview-e68ab1498
@metamask-previews/authenticated-user-storage@3.0.2-preview-e68ab1498
@metamask-previews/base-controller@9.1.0-preview-e68ab1498
@metamask-previews/base-data-service@1.0.0-preview-e68ab1498
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-e68ab1498
@metamask-previews/bridge-controller@79.3.1-preview-e68ab1498
@metamask-previews/bridge-status-controller@75.2.1-preview-e68ab1498
@metamask-previews/build-utils@3.0.4-preview-e68ab1498
@metamask-previews/chain-agnostic-permission@1.7.0-preview-e68ab1498
@metamask-previews/chomp-api-service@4.0.1-preview-e68ab1498
@metamask-previews/claims-controller@0.6.1-preview-e68ab1498
@metamask-previews/client-controller@1.0.1-preview-e68ab1498
@metamask-previews/client-utils@2.1.1-preview-e68ab1498
@metamask-previews/compliance-controller@2.1.0-preview-e68ab1498
@metamask-previews/composable-controller@12.0.1-preview-e68ab1498
@metamask-previews/config-registry-controller@3.1.0-preview-e68ab1498
@metamask-previews/connectivity-controller@0.3.0-preview-e68ab1498
@metamask-previews/controller-utils@12.3.0-preview-e68ab1498
@metamask-previews/core-backend@9.0.0-preview-e68ab1498
@metamask-previews/delegation-controller@3.0.2-preview-e68ab1498
@metamask-previews/earn-controller@12.2.6-preview-e68ab1498
@metamask-previews/eip-5792-middleware@3.0.5-preview-e68ab1498
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-e68ab1498
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-e68ab1498
@metamask-previews/eth-block-tracker@15.0.1-preview-e68ab1498
@metamask-previews/eth-json-rpc-middleware@24.0.1-preview-e68ab1498
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-e68ab1498
@metamask-previews/foundryup@1.0.1-preview-e68ab1498
@metamask-previews/gas-fee-controller@26.3.2-preview-e68ab1498
@metamask-previews/gator-permissions-controller@5.0.2-preview-e68ab1498
@metamask-previews/geolocation-controller@1.0.0-preview-e68ab1498
@metamask-previews/java-tron-up@1.0.0-preview-e68ab1498
@metamask-previews/json-rpc-engine@10.5.0-preview-e68ab1498
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-e68ab1498
@metamask-previews/keyring-controller@27.1.1-preview-e68ab1498
@metamask-previews/kyc-controller@0.0.0-preview-e68ab1498
@metamask-previews/local-node-utils@1.0.0-preview-e68ab1498
@metamask-previews/logging-controller@9.0.0-preview-e68ab1498
@metamask-previews/message-manager@14.1.2-preview-e68ab1498
@metamask-previews/messenger@2.0.0-preview-e68ab1498
@metamask-previews/messenger-cli@0.2.0-preview-e68ab1498
@metamask-previews/money-account-api-data-service@0.4.1-preview-e68ab1498
@metamask-previews/money-account-balance-service@2.4.3-preview-e68ab1498
@metamask-previews/money-account-controller@1.0.0-preview-e68ab1498
@metamask-previews/money-account-upgrade-controller@3.0.2-preview-e68ab1498
@metamask-previews/money-account-utils@1.1.0-preview-e68ab1498
@metamask-previews/multichain-account-service@13.0.2-preview-e68ab1498
@metamask-previews/multichain-api-middleware@4.0.3-preview-e68ab1498
@metamask-previews/multichain-network-controller@3.2.4-preview-e68ab1498
@metamask-previews/multichain-transactions-controller@7.1.2-preview-e68ab1498
@metamask-previews/name-controller@9.1.2-preview-e68ab1498
@metamask-previews/network-connection-banner-controller@0.2.1-preview-e68ab1498
@metamask-previews/network-controller@36.0.0-preview-e68ab1498
@metamask-previews/network-enablement-controller@6.0.5-preview-e68ab1498
@metamask-previews/notification-services-controller@26.0.1-preview-e68ab1498
@metamask-previews/passkey-controller@3.1.0-preview-e68ab1498
@metamask-previews/permission-controller@13.1.1-preview-e68ab1498
@metamask-previews/permission-log-controller@5.1.0-preview-e68ab1498
@metamask-previews/perps-controller@12.2.0-preview-e68ab1498
@metamask-previews/phishing-controller@17.4.0-preview-e68ab1498
@metamask-previews/platform-api-docs@0.0.0-preview-e68ab1498
@metamask-previews/polling-controller@16.0.9-preview-e68ab1498
@metamask-previews/preferences-controller@23.1.0-preview-e68ab1498
@metamask-previews/profile-metrics-controller@4.0.3-preview-e68ab1498
@metamask-previews/profile-sync-controller@29.0.0-preview-e68ab1498
@metamask-previews/ramps-controller@20.0.0-preview-e68ab1498
@metamask-previews/rate-limit-controller@7.0.1-preview-e68ab1498
@metamask-previews/react-data-query@1.0.0-preview-e68ab1498
@metamask-previews/remote-feature-flag-controller@6.0.0-preview-e68ab1498
@metamask-previews/sample-controllers@5.0.6-preview-e68ab1498
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-e68ab1498
@metamask-previews/selected-network-controller@26.1.7-preview-e68ab1498
@metamask-previews/sentinel-api-service@1.0.1-preview-e68ab1498
@metamask-previews/shield-controller@6.0.1-preview-e68ab1498
@metamask-previews/signature-controller@39.2.10-preview-e68ab1498
@metamask-previews/smart-transactions-controller@25.1.1-preview-e68ab1498
@metamask-previews/snap-account-service@2.1.2-preview-e68ab1498
@metamask-previews/social-controllers@2.7.2-preview-e68ab1498
@metamask-previews/solana-test-validator-up@1.0.0-preview-e68ab1498
@metamask-previews/stellar-quickstart-up@0.0.0-preview-e68ab1498
@metamask-previews/storage-service@1.0.2-preview-e68ab1498
@metamask-previews/subscription-controller@8.0.1-preview-e68ab1498
@metamask-previews/transaction-controller@69.6.1-preview-e68ab1498
@metamask-previews/transaction-pay-controller@27.0.0-preview-e68ab1498
@metamask-previews/user-operation-controller@41.2.9-preview-e68ab1498
@metamask-previews/wallet@12.0.2-preview-e68ab1498
@metamask-previews/wallet-cli@0.0.0-preview-e68ab1498

Comment thread packages/assets-controller/src/migrations/healAssetsInfoMetadata.ts
@Prithpal-Sooriya

Copy link
Copy Markdown
Contributor Author

@cursor fix linting only thx

@cursor

cursor Bot commented Aug 27, 2026

Copy link
Copy Markdown

Fixed the lint:misc:check failure and pushed bd384ed2eb.

Formatted 3 files:

  • AssetsController.spam-cleanup.integration.test.ts
  • __fixtures__/scam-token-cleanup/api-responses/tokens-api/v3-assets.ts
  • __fixtures__/scam-token-cleanup/captureTokenApiResponses.ts

No logic changes — formatting only. CI should pass lint on the next run.

Open in Web Open in Cursor 

cursoragent and others added 3 commits August 27, 2026 13:51
Co-authored-by: Prithpal Sooriya <prithpal.sooriya@gmail.com>
…ock' of github.com:MetaMask/core into fix(assets-controller)/add-asset-cleanup-process-on-unlock
@Prithpal-Sooriya

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@8.0.0-preview-db4b81608
@metamask-previews/accounts-controller@39.1.1-preview-db4b81608
@metamask-previews/address-book-controller@7.1.2-preview-db4b81608
@metamask-previews/ai-controllers@0.8.0-preview-db4b81608
@metamask-previews/analytics-controller@2.0.0-preview-db4b81608
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-db4b81608
@metamask-previews/announcement-controller@8.1.0-preview-db4b81608
@metamask-previews/app-metadata-controller@2.0.1-preview-db4b81608
@metamask-previews/approval-controller@9.0.2-preview-db4b81608
@metamask-previews/assets-controller@14.0.2-preview-db4b81608
@metamask-previews/assets-controllers@111.1.3-preview-db4b81608
@metamask-previews/authenticated-user-storage@3.0.2-preview-db4b81608
@metamask-previews/base-controller@9.1.0-preview-db4b81608
@metamask-previews/base-data-service@1.0.0-preview-db4b81608
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-db4b81608
@metamask-previews/bridge-controller@79.3.1-preview-db4b81608
@metamask-previews/bridge-status-controller@75.2.1-preview-db4b81608
@metamask-previews/build-utils@3.0.4-preview-db4b81608
@metamask-previews/chain-agnostic-permission@1.7.0-preview-db4b81608
@metamask-previews/chomp-api-service@4.0.1-preview-db4b81608
@metamask-previews/claims-controller@0.6.1-preview-db4b81608
@metamask-previews/client-controller@1.0.1-preview-db4b81608
@metamask-previews/client-utils@2.1.1-preview-db4b81608
@metamask-previews/compliance-controller@2.1.0-preview-db4b81608
@metamask-previews/composable-controller@12.0.1-preview-db4b81608
@metamask-previews/config-registry-controller@3.1.0-preview-db4b81608
@metamask-previews/connectivity-controller@0.3.0-preview-db4b81608
@metamask-previews/controller-utils@12.3.0-preview-db4b81608
@metamask-previews/core-backend@9.0.0-preview-db4b81608
@metamask-previews/delegation-controller@3.0.2-preview-db4b81608
@metamask-previews/earn-controller@12.2.6-preview-db4b81608
@metamask-previews/eip-5792-middleware@3.0.5-preview-db4b81608
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-db4b81608
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-db4b81608
@metamask-previews/eth-block-tracker@15.0.1-preview-db4b81608
@metamask-previews/eth-json-rpc-middleware@24.0.1-preview-db4b81608
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-db4b81608
@metamask-previews/foundryup@1.0.1-preview-db4b81608
@metamask-previews/gas-fee-controller@26.3.2-preview-db4b81608
@metamask-previews/gator-permissions-controller@5.0.2-preview-db4b81608
@metamask-previews/geolocation-controller@1.0.0-preview-db4b81608
@metamask-previews/java-tron-up@1.0.0-preview-db4b81608
@metamask-previews/json-rpc-engine@10.5.0-preview-db4b81608
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-db4b81608
@metamask-previews/keyring-controller@27.1.1-preview-db4b81608
@metamask-previews/kyc-controller@0.0.0-preview-db4b81608
@metamask-previews/local-node-utils@1.0.0-preview-db4b81608
@metamask-previews/logging-controller@9.0.0-preview-db4b81608
@metamask-previews/message-manager@14.1.2-preview-db4b81608
@metamask-previews/messenger@2.0.0-preview-db4b81608
@metamask-previews/messenger-cli@0.2.0-preview-db4b81608
@metamask-previews/money-account-api-data-service@0.4.1-preview-db4b81608
@metamask-previews/money-account-balance-service@2.4.3-preview-db4b81608
@metamask-previews/money-account-controller@1.0.0-preview-db4b81608
@metamask-previews/money-account-upgrade-controller@3.0.2-preview-db4b81608
@metamask-previews/money-account-utils@1.1.0-preview-db4b81608
@metamask-previews/multichain-account-service@13.0.2-preview-db4b81608
@metamask-previews/multichain-api-middleware@4.0.3-preview-db4b81608
@metamask-previews/multichain-network-controller@3.2.4-preview-db4b81608
@metamask-previews/multichain-transactions-controller@7.1.2-preview-db4b81608
@metamask-previews/name-controller@9.1.2-preview-db4b81608
@metamask-previews/network-connection-banner-controller@0.2.1-preview-db4b81608
@metamask-previews/network-controller@36.0.0-preview-db4b81608
@metamask-previews/network-enablement-controller@6.0.5-preview-db4b81608
@metamask-previews/notification-services-controller@26.0.1-preview-db4b81608
@metamask-previews/passkey-controller@3.1.0-preview-db4b81608
@metamask-previews/permission-controller@13.1.1-preview-db4b81608
@metamask-previews/permission-log-controller@5.1.0-preview-db4b81608
@metamask-previews/perps-controller@12.2.0-preview-db4b81608
@metamask-previews/phishing-controller@17.4.0-preview-db4b81608
@metamask-previews/platform-api-docs@0.0.0-preview-db4b81608
@metamask-previews/polling-controller@16.0.9-preview-db4b81608
@metamask-previews/preferences-controller@23.1.0-preview-db4b81608
@metamask-previews/profile-metrics-controller@4.0.3-preview-db4b81608
@metamask-previews/profile-sync-controller@29.0.0-preview-db4b81608
@metamask-previews/ramps-controller@20.0.0-preview-db4b81608
@metamask-previews/rate-limit-controller@7.0.1-preview-db4b81608
@metamask-previews/react-data-query@1.0.0-preview-db4b81608
@metamask-previews/remote-feature-flag-controller@6.0.0-preview-db4b81608
@metamask-previews/sample-controllers@5.0.6-preview-db4b81608
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-db4b81608
@metamask-previews/selected-network-controller@26.1.7-preview-db4b81608
@metamask-previews/sentinel-api-service@1.0.1-preview-db4b81608
@metamask-previews/shield-controller@6.0.1-preview-db4b81608
@metamask-previews/signature-controller@39.2.10-preview-db4b81608
@metamask-previews/smart-transactions-controller@25.1.1-preview-db4b81608
@metamask-previews/snap-account-service@2.1.2-preview-db4b81608
@metamask-previews/social-controllers@2.7.2-preview-db4b81608
@metamask-previews/solana-test-validator-up@1.0.0-preview-db4b81608
@metamask-previews/stellar-quickstart-up@0.0.0-preview-db4b81608
@metamask-previews/storage-service@1.0.2-preview-db4b81608
@metamask-previews/subscription-controller@8.0.1-preview-db4b81608
@metamask-previews/transaction-controller@69.6.1-preview-db4b81608
@metamask-previews/transaction-pay-controller@27.0.0-preview-db4b81608
@metamask-previews/user-operation-controller@41.2.9-preview-db4b81608
@metamask-previews/wallet@12.0.2-preview-db4b81608
@metamask-previews/wallet-cli@0.0.0-preview-db4b81608

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants