> ## Documentation Index
> Fetch the complete documentation index at: https://www.dynamic.xyz/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Managing embedded wallets

> Configure embedded wallet creation, recovery, gas sponsorship, and notifications for a Dynamic environment from the terminal.

Embedded wallets are Dynamic-created, user-owned wallets secured with [multi-party computation (MPC)](/overview/wallets/embedded-wallets/mpc/overview). You configure how they behave per environment — when they're created, how users recover them, whether gas is sponsored — through the [project settings](/cli/guides/project-settings) tree under `sdk.embeddedWallets`.

<Note>
  **What you need:** The CLI installed and authenticated, with an environment selected. See [Getting started](/cli/getting-started). These settings change configuration for the **active environment** — confirm it with `dyn status` first.
</Note>

<Warning>
  **These are dashboard settings — configuration, not behavior. How they take effect depends on your SDK.**

  * **JavaScript SDK (`@dynamic-labs/client`)** — used vanilla, or inside React, Vue, and other frameworks. This is the SDK to build on. It surfaces each setting to your app, and you honor it with an explicit call at the right point in your flow (each section below names the call). You stay in control of *when* wallets are created and *how* recovery and security prompts appear.
  * **Legacy React SDK (`@dynamic-labs/sdk-react-core`)** — deprecated; documented here only for existing integrations. It reads the same settings and runs the flows for you (creating wallets during sign-up, rendering recovery and authenticator prompts). New apps should build on the JavaScript SDK.

  Changing a setting here updates the environment's configuration; your app then acts on it through whichever SDK you use. Each section below shows how.
</Warning>

## Discover the available settings

`dyn settings list` is the canonical discovery surface. Filter it to the embedded wallet subtree:

```sh theme={"system"}
dyn settings list | grep -i embeddedWallets
dyn settings show sdk.embeddedWallets        # read the whole subtree
```

## Control wallet creation

Mark that new users should get an embedded wallet:

```sh theme={"system"}
dyn settings set sdk.embeddedWallets.automaticEmbeddedWalletCreation true
```

To extend that to users who sign in with an external wallet (e.g. MetaMask):

```sh theme={"system"}
dyn settings set sdk.embeddedWallets.automaticEmbeddedWalletCreationForExternal true
```

<Note>
  **Acting on this setting:**

  * **JavaScript SDK (`@dynamic-labs/client`):** read the policy for the user's chain with `shouldAutoCreateWalletForChain`, then create the wallet when it returns `true` by calling `createWaasWalletAccounts`. This lets you decide exactly when creation happens — right after sign-up, or lazily before the first transaction. See [Creating WaaS wallet accounts](/javascript/reference/waas/creating-waas-wallet-accounts).
  * **Legacy React SDK (`@dynamic-labs/sdk-react-core`):** the wallet is created automatically during sign-up — no extra code. See [Creating wallets](/react/wallets/embedded-wallets/mpc/creating-wallets).
</Note>

## Configure recovery and security

Let users start account recovery by email:

```sh theme={"system"}
dyn settings set sdk.embeddedWallets.emailRecoveryEnabled true
```

Require users to add a security method (authenticator) at sign-up, optionally letting them defer it until just before their first transaction:

```sh theme={"system"}
dyn settings set sdk.embeddedWallets.forceAuthenticatorAtSignup true
dyn settings set sdk.embeddedWallets.allowSkippingAuthenticatorAtSignup true
```

<Note>
  **Acting on these settings:**

  * **JavaScript SDK (`@dynamic-labs/client`):** you own the recovery and sign-up security experience. Offer email recovery and prompt for an authenticator at the points your flow calls for them, using the SDK's WaaS recovery and authentication APIs — which also lets you tailor exactly when each prompt appears. (These particular toggles configure the prebuilt prompts in the legacy React SDK; on the JavaScript SDK you implement the equivalent UX directly.)
  * **Legacy React SDK (`@dynamic-labs/sdk-react-core`):** these render prebuilt recovery and authenticator prompts for you during the auth flow.
</Note>

## Sponsor gas

Cover network fees so users don't pay them. Enable per chain family:

```sh theme={"system"}
dyn settings set sdk.embeddedWallets.evmGasSponsorshipEnabled true   # EVM chains
dyn settings set sdk.embeddedWallets.svmGasSponsorshipEnabled true   # Solana
```

<Note>
  Gas sponsorship is enforced by Dynamic when a transaction is submitted, so the policy applies no matter which SDK you use. In the JavaScript SDK (`@dynamic-labs/client`), check it before submitting with the `isEvmGasSponsorshipEnabled` helper; the legacy React SDK routes transactions through sponsorship transparently.
</Note>

## Email notifications

Dynamic emails users on sensitive wallet events. These are sent server-side and apply regardless of SDK. They are on by default; toggle them under `security.notifications`:

```sh theme={"system"}
dyn settings set security.notifications.waasPrivateKeyExport true    # private key export
dyn settings set security.notifications.waasSignedTransaction true   # transaction signed
```

## Apply across environments

To roll the same wallet configuration from sandbox to live, capture it as code and apply it rather than re-running each `set`:

```sh theme={"system"}
dyn export --output-file env.yaml
dyn apply -f env.yaml --dry-run
```

See [Config as code](/cli/guides/config-as-code) for the full export/apply workflow and its safety gates.

<Warning>
  Changes apply immediately to the active environment. On **live**, that affects real users' wallets. Confirm with `dyn status`, and test on sandbox first.
</Warning>

## Related

* [Embedded wallets overview](/overview/wallets/embedded-wallets/mpc/overview) — how MPC embedded wallets work.
* [Project settings](/cli/guides/project-settings) — the full settings tree and `dyn settings` commands.
* [Config as code](/cli/guides/config-as-code) — export and apply environment configuration.
