Skip to content

feat(ramps-controller): add host network access gate - #11222

Draft
wenfix wants to merge 3 commits into
mainfrom
ramps-privacy-guard
Draft

wenfix wants to merge 3 commits into
mainfrom
ramps-privacy-guard

Conversation

@wenfix

@wenfix wenfix commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Explanation

Adds an optional isNetworkAllowed constructor option to RampsController so the host can block RampsController network access at runtime.

Every method that can reach the network checks the option before any state write or request, and throws an error carrying the new RAMPS_ERROR_CODES.NETWORK_ACCESS_DENIED code when it returns false. Denied calls do not serve non-expired request-cache entries either, so hosts render already-fetched data from controller state while access is denied.

addOrder, addPrecreatedOrder, removeOrder, and transakLogout still apply their local change and skip only the remote call; deferred order writes are picked up by the next full sync. Order polling pauses while access is denied without extending its backoff. Omitting the option keeps the existing behavior.

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

@wenfix

wenfix commented Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

Add an optional `isNetworkAllowed` constructor callback so hosts can
block RampsController network access at runtime. Every method that can
reach the network checks it before any state write or request and throws
an error with the new `NETWORK_ACCESS_DENIED` error key; denied calls do
not serve request-cache entries either.

`addOrder`, `addPrecreatedOrder`, `removeOrder`, and `transakLogout`
keep their local change and skip only the remote call, and order polling
pauses without extending its backoff.
…ense

Link the entry to its pull request and match the changelog voice
required for shipping.
Sync the generated action-type docs with the network-gate JSDoc added to
addOrder, addPrecreatedOrder, removeOrder, and transakLogout.
@wenfix
wenfix force-pushed the ramps-privacy-guard branch from 0d9e1b3 to eb5c879 Compare November 3, 2026 14:30
@wenfix

wenfix commented Nov 3, 2026

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-previews

@github-actions

github-actions Bot commented Nov 3, 2026

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@11.2.0-preview-eb5c879
@metamask-previews/accounts-controller@40.1.0-preview-eb5c879
@metamask-previews/address-book-controller@8.0.0-preview-eb5c879
@metamask-previews/advanced-chart-core@1.0.0-preview-eb5c879
@metamask-previews/ai-controllers@2.0.0-preview-eb5c879
@metamask-previews/analytics-controller@4.1.0-preview-eb5c879
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-eb5c879
@metamask-previews/announcement-controller@9.0.0-preview-eb5c879
@metamask-previews/app-metadata-controller@3.0.0-preview-eb5c879
@metamask-previews/approval-controller@10.0.0-preview-eb5c879
@metamask-previews/assets-controller@20.2.0-preview-eb5c879
@metamask-previews/assets-controllers@113.1.0-preview-eb5c879
@metamask-previews/authenticated-user-storage@4.1.0-preview-eb5c879
@metamask-previews/base-controller@10.1.0-preview-eb5c879
@metamask-previews/base-data-service@2.1.0-preview-eb5c879
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-eb5c879
@metamask-previews/bridge-controller@83.1.3-preview-eb5c879
@metamask-previews/bridge-status-controller@78.0.1-preview-eb5c879
@metamask-previews/build-utils@4.0.0-preview-eb5c879
@metamask-previews/byte-utils@0.1.0-preview-eb5c879
@metamask-previews/chain-agnostic-permission@2.1.0-preview-eb5c879
@metamask-previews/chomp-api-service@7.0.0-preview-eb5c879
@metamask-previews/claims-controller@1.1.0-preview-eb5c879
@metamask-previews/client-controller@2.0.0-preview-eb5c879
@metamask-previews/client-utils@3.1.0-preview-eb5c879
@metamask-previews/compliance-controller@3.0.0-preview-eb5c879
@metamask-previews/composable-controller@13.0.0-preview-eb5c879
@metamask-previews/config-registry-controller@5.0.0-preview-eb5c879
@metamask-previews/connectivity-controller@1.0.0-preview-eb5c879
@metamask-previews/controller-utils@13.0.0-preview-eb5c879
@metamask-previews/core-backend@13.0.0-preview-eb5c879
@metamask-previews/cryptography@1.1.2-preview-eb5c879
@metamask-previews/delegation-controller@4.0.0-preview-eb5c879
@metamask-previews/earn-controller@13.0.2-preview-eb5c879
@metamask-previews/eip-5792-middleware@4.1.0-preview-eb5c879
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-eb5c879
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-eb5c879
@metamask-previews/error-utils@0.1.0-preview-eb5c879
@metamask-previews/eth-block-tracker@16.0.0-preview-eb5c879
@metamask-previews/eth-json-rpc-middleware@26.0.0-preview-eb5c879
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-eb5c879
@metamask-previews/foundryup@2.0.0-preview-eb5c879
@metamask-previews/gas-fee-controller@27.0.0-preview-eb5c879
@metamask-previews/gator-permissions-controller@6.1.0-preview-eb5c879
@metamask-previews/geolocation-controller@2.0.0-preview-eb5c879
@metamask-previews/java-tron-up@2.0.0-preview-eb5c879
@metamask-previews/json-rpc-engine@11.0.0-preview-eb5c879
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-eb5c879
@metamask-previews/keyring-controller@28.2.0-preview-eb5c879
@metamask-previews/kyc-controller@0.14.0-preview-eb5c879
@metamask-previews/local-node-utils@2.0.0-preview-eb5c879
@metamask-previews/logging-controller@10.0.0-preview-eb5c879
@metamask-previews/marketing-consent-controller@1.1.0-preview-eb5c879
@metamask-previews/message-manager@15.0.0-preview-eb5c879
@metamask-previews/messenger@3.0.0-preview-eb5c879
@metamask-previews/messenger-cli@1.0.0-preview-eb5c879
@metamask-previews/mfa-recovery-controller@0.0.0-preview-eb5c879
@metamask-previews/money-account-api-data-service@2.3.1-preview-eb5c879
@metamask-previews/money-account-balance-service@3.1.2-preview-eb5c879
@metamask-previews/money-account-controller@3.0.0-preview-eb5c879
@metamask-previews/money-account-lifecycle-controller@0.0.0-preview-eb5c879
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-eb5c879
@metamask-previews/money-account-upgrade-controller@6.0.0-preview-eb5c879
@metamask-previews/money-account-utils@2.2.0-preview-eb5c879
@metamask-previews/multichain-account-service@14.1.0-preview-eb5c879
@metamask-previews/multichain-api-middleware@5.0.0-preview-eb5c879
@metamask-previews/multichain-network-controller@4.0.0-preview-eb5c879
@metamask-previews/multichain-transactions-controller@8.0.0-preview-eb5c879
@metamask-previews/name-controller@10.0.0-preview-eb5c879
@metamask-previews/network-connection-banner-controller@1.0.0-preview-eb5c879
@metamask-previews/network-controller@37.1.1-preview-eb5c879
@metamask-previews/network-enablement-controller@7.1.0-preview-eb5c879
@metamask-previews/node-utils@0.1.0-preview-eb5c879
@metamask-previews/notification-services-controller@30.1.0-preview-eb5c879
@metamask-previews/passkey-controller@4.1.0-preview-eb5c879
@metamask-previews/permission-controller@14.1.0-preview-eb5c879
@metamask-previews/permission-log-controller@6.0.0-preview-eb5c879
@metamask-previews/perps-controller@22.1.0-preview-eb5c879
@metamask-previews/phishing-controller@18.3.0-preview-eb5c879
@metamask-previews/platform-api-docs@0.2.1-preview-eb5c879
@metamask-previews/polling-controller@17.0.0-preview-eb5c879
@metamask-previews/preferences-controller@24.0.0-preview-eb5c879
@metamask-previews/profile-controller@1.2.1-preview-eb5c879
@metamask-previews/profile-metrics-controller@5.2.1-preview-eb5c879
@metamask-previews/profile-sync-controller@36.0.0-preview-eb5c879
@metamask-previews/ramps-controller@29.0.0-preview-eb5c879
@metamask-previews/rate-limit-controller@8.0.0-preview-eb5c879
@metamask-previews/react-data-query@2.0.0-preview-eb5c879
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-eb5c879
@metamask-previews/sample-controllers@6.0.0-preview-eb5c879
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-eb5c879
@metamask-previews/selected-network-controller@27.0.0-preview-eb5c879
@metamask-previews/sentinel-api-service@2.1.0-preview-eb5c879
@metamask-previews/shield-controller@7.1.1-preview-eb5c879
@metamask-previews/signature-controller@40.0.0-preview-eb5c879
@metamask-previews/smart-transactions-controller@27.2.1-preview-eb5c879
@metamask-previews/snap-account-service@4.0.0-preview-eb5c879
@metamask-previews/social-controllers@3.15.0-preview-eb5c879
@metamask-previews/solana-test-validator-up@2.0.0-preview-eb5c879
@metamask-previews/stellar-quickstart-up@0.0.0-preview-eb5c879
@metamask-previews/storage-service@2.0.0-preview-eb5c879
@metamask-previews/subscription-controller@15.1.2-preview-eb5c879
@metamask-previews/transaction-controller@73.0.0-preview-eb5c879
@metamask-previews/transaction-pay-controller@30.3.3-preview-eb5c879
@metamask-previews/transaction-pay-middleware@2.0.1-preview-eb5c879
@metamask-previews/type-utils@0.1.0-preview-eb5c879
@metamask-previews/user-operation-controller@42.1.0-preview-eb5c879
@metamask-previews/utils@12.0.1-preview-eb5c879
@metamask-previews/wallet@21.0.0-preview-eb5c879
@metamask-previews/watch-only-account-service@0.1.0-preview-eb5c879

This branch has not been deployed

No deployments
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.

1 participant