Skip to content

refactor(account-tree-controller): force use of password for :exportState - #9883

Merged
ccharly merged 3 commits into
mainfrom
cc/feat/account-tree-export-import-use-password
Aug 14, 2026
Merged

refactor(account-tree-controller): force use of password for :exportState#9883
ccharly merged 3 commits into
mainfrom
cc/feat/account-tree-export-import-use-password

Conversation

@ccharly

@ccharly ccharly commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Explanation

Forcing consumers to pass the password before extracting the account-tree state and the associated secrets.

References

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

High Risk
Touches mnemonic/private-key export and adds a breaking API; consumers must pass passwords and register KeyringController:verifyPassword.

Overview
Breaking: exportState now requires a vault password whenever includeSecrets: true. ExportStateOptions is a discriminated union so TypeScript enforces password with secrets and forbids it for metadata-only exports.

Before reading mnemonics or private keys, exportState calls KeyringController:verifyPassword; wrong passwords propagate as errors. Metadata-only export still only needs an unlocked vault. The controller messenger must allow KeyringController:verifyPassword, and the changelog marks the :import/exportState addition as breaking for consumers.

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

@ccharly
ccharly marked this pull request as ready for review August 14, 2026 15:13
@ccharly
ccharly requested review from a team as code owners August 14, 2026 15:13
@ccharly
ccharly deployed to default-branch August 14, 2026 15:13 — with GitHub Actions Active
@ccharly

ccharly commented Aug 14, 2026

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@7.6.1-preview-0f21c08
@metamask-previews/accounts-controller@39.1.0-preview-0f21c08
@metamask-previews/address-book-controller@7.1.2-preview-0f21c08
@metamask-previews/ai-controllers@0.8.0-preview-0f21c08
@metamask-previews/analytics-controller@2.0.0-preview-0f21c08
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-0f21c08
@metamask-previews/announcement-controller@8.1.0-preview-0f21c08
@metamask-previews/app-metadata-controller@2.0.1-preview-0f21c08
@metamask-previews/approval-controller@9.0.2-preview-0f21c08
@metamask-previews/assets-controller@13.1.3-preview-0f21c08
@metamask-previews/assets-controllers@111.1.0-preview-0f21c08
@metamask-previews/authenticated-user-storage@3.0.1-preview-0f21c08
@metamask-previews/base-controller@9.1.0-preview-0f21c08
@metamask-previews/base-data-service@0.1.3-preview-0f21c08
@metamask-previews/bitcoin-regtest-up@1.0.0-preview-0f21c08
@metamask-previews/bridge-controller@79.2.0-preview-0f21c08
@metamask-previews/bridge-status-controller@75.1.0-preview-0f21c08
@metamask-previews/build-utils@3.0.4-preview-0f21c08
@metamask-previews/chain-agnostic-permission@1.7.0-preview-0f21c08
@metamask-previews/chomp-api-service@4.0.0-preview-0f21c08
@metamask-previews/claims-controller@0.6.0-preview-0f21c08
@metamask-previews/client-controller@1.0.1-preview-0f21c08
@metamask-previews/client-utils@2.0.2-preview-0f21c08
@metamask-previews/compliance-controller@2.1.0-preview-0f21c08
@metamask-previews/composable-controller@12.0.1-preview-0f21c08
@metamask-previews/config-registry-controller@2.0.1-preview-0f21c08
@metamask-previews/connectivity-controller@0.3.0-preview-0f21c08
@metamask-previews/controller-utils@12.3.0-preview-0f21c08
@metamask-previews/core-backend@8.1.1-preview-0f21c08
@metamask-previews/delegation-controller@3.0.2-preview-0f21c08
@metamask-previews/earn-controller@12.2.4-preview-0f21c08
@metamask-previews/eip-5792-middleware@3.0.5-preview-0f21c08
@metamask-previews/eip-7702-internal-rpc-middleware@0.1.1-preview-0f21c08
@metamask-previews/eip1193-permission-middleware@2.0.1-preview-0f21c08
@metamask-previews/ens-controller@19.1.6-preview-0f21c08
@metamask-previews/eth-block-tracker@15.0.1-preview-0f21c08
@metamask-previews/eth-json-rpc-middleware@24.0.0-preview-0f21c08
@metamask-previews/eth-json-rpc-provider@6.0.1-preview-0f21c08
@metamask-previews/foundryup@1.0.1-preview-0f21c08
@metamask-previews/gas-fee-controller@26.3.1-preview-0f21c08
@metamask-previews/gator-permissions-controller@5.0.1-preview-0f21c08
@metamask-previews/geolocation-controller@1.0.0-preview-0f21c08
@metamask-previews/java-tron-up@1.0.0-preview-0f21c08
@metamask-previews/json-rpc-engine@10.5.0-preview-0f21c08
@metamask-previews/json-rpc-middleware-stream@8.0.8-preview-0f21c08
@metamask-previews/keyring-controller@27.1.1-preview-0f21c08
@metamask-previews/kyc-controller@0.0.0-preview-0f21c08
@metamask-previews/local-node-utils@1.0.0-preview-0f21c08
@metamask-previews/logging-controller@9.0.0-preview-0f21c08
@metamask-previews/message-manager@14.1.2-preview-0f21c08
@metamask-previews/messenger@2.0.0-preview-0f21c08
@metamask-previews/messenger-cli@0.2.0-preview-0f21c08
@metamask-previews/money-account-api-data-service@0.4.0-preview-0f21c08
@metamask-previews/money-account-balance-service@2.4.1-preview-0f21c08
@metamask-previews/money-account-controller@1.0.0-preview-0f21c08
@metamask-previews/money-account-upgrade-controller@3.0.1-preview-0f21c08
@metamask-previews/money-account-utils@1.1.0-preview-0f21c08
@metamask-previews/multichain-account-service@13.0.1-preview-0f21c08
@metamask-previews/multichain-api-middleware@4.0.2-preview-0f21c08
@metamask-previews/multichain-network-controller@3.2.3-preview-0f21c08
@metamask-previews/multichain-transactions-controller@7.1.2-preview-0f21c08
@metamask-previews/name-controller@9.1.2-preview-0f21c08
@metamask-previews/network-connection-banner-controller@0.1.2-preview-0f21c08
@metamask-previews/network-controller@35.0.1-preview-0f21c08
@metamask-previews/network-enablement-controller@6.0.3-preview-0f21c08
@metamask-previews/notification-services-controller@26.0.1-preview-0f21c08
@metamask-previews/passkey-controller@3.0.0-preview-0f21c08
@metamask-previews/permission-controller@13.1.1-preview-0f21c08
@metamask-previews/permission-log-controller@5.1.0-preview-0f21c08
@metamask-previews/perps-controller@12.0.0-preview-0f21c08
@metamask-previews/phishing-controller@17.3.1-preview-0f21c08
@metamask-previews/platform-api-docs@0.0.0-preview-0f21c08
@metamask-previews/polling-controller@16.0.9-preview-0f21c08
@metamask-previews/preferences-controller@23.1.0-preview-0f21c08
@metamask-previews/profile-metrics-controller@4.0.3-preview-0f21c08
@metamask-previews/profile-sync-controller@29.0.0-preview-0f21c08
@metamask-previews/ramps-controller@20.0.0-preview-0f21c08
@metamask-previews/rate-limit-controller@7.0.1-preview-0f21c08
@metamask-previews/react-data-query@0.2.2-preview-0f21c08
@metamask-previews/remote-feature-flag-controller@5.0.0-preview-0f21c08
@metamask-previews/sample-controllers@5.0.4-preview-0f21c08
@metamask-previews/seedless-onboarding-controller@10.1.1-preview-0f21c08
@metamask-previews/selected-network-controller@26.1.6-preview-0f21c08
@metamask-previews/sentinel-api-service@1.0.0-preview-0f21c08
@metamask-previews/shield-controller@6.0.0-preview-0f21c08
@metamask-previews/signature-controller@39.2.9-preview-0f21c08
@metamask-previews/smart-transactions-controller@25.1.0-preview-0f21c08
@metamask-previews/snap-account-service@2.1.2-preview-0f21c08
@metamask-previews/social-controllers@2.7.1-preview-0f21c08
@metamask-previews/solana-test-validator-up@1.0.0-preview-0f21c08
@metamask-previews/stellar-quickstart-up@0.0.0-preview-0f21c08
@metamask-previews/storage-service@1.0.2-preview-0f21c08
@metamask-previews/subscription-controller@7.0.0-preview-0f21c08
@metamask-previews/transaction-controller@69.5.2-preview-0f21c08
@metamask-previews/transaction-pay-controller@26.3.0-preview-0f21c08
@metamask-previews/user-operation-controller@41.2.8-preview-0f21c08
@metamask-previews/wallet@10.0.0-preview-0f21c08
@metamask-previews/wallet-cli@0.0.0-preview-0f21c08

@ccharly
ccharly added this pull request to the merge queue Aug 14, 2026
Merged via the queue into main with commit 7f77b31 Aug 14, 2026
148 checks passed
@ccharly
ccharly deleted the cc/feat/account-tree-export-import-use-password branch August 14, 2026 15:41
@ccharly

ccharly commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

Manually tested, all good. Merging.

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