---
description: "Sign a message or typed data Examples: - cast wallet sign \"hello\" --account dev - cast wallet sign \"hello\" --private-key $PK - cast wallet sign --data --from-file typed_data.json --ledger"
---

_Generated from `cast wallet sign --help`; see [CLI reference versions](/reference/versions). Regenerate this page instead of editing it directly._

## cast wallet sign

Sign a message or typed data

Examples:
- cast wallet sign "hello" --account dev
- cast wallet sign "hello" --private-key $PK
- cast wallet sign --data --from-file typed_data.json --ledger

:::terminal

```bash
$ cast wallet sign --help
```

```txt
Usage: cast wallet sign [OPTIONS] <MESSAGE>

Arguments:
  <MESSAGE>
          The message, typed data, or hash to sign.
          
          Messages starting with 0x are expected to be hex encoded, which get
          decoded before being signed.
          
          The message will be prefixed with the Ethereum Signed Message header
          and hashed before signing, unless `--no-hash` is provided.
          
          Typed data can be provided as a json string or a file name. Use --data
          flag to denote the message is a string of typed data. Use --data
          --from-file to denote the message is a file name containing typed
          data. The data will be combined and hashed using the EIP712
          specification before signing. The data should be formatted as JSON.

Options:
      --data
          Treat the message as JSON typed data

      --from-file
          Treat the message as a file containing JSON typed data. Requires
          `--data`

      --no-hash
          Treat the message as a raw 32-byte hash and sign it directly without
          hashing it again

  -h, --help
          Print help (see a summary with '-h')

  -j, --threads <THREADS>
          Number of threads to use. Specifying 0 defaults to the number of
          logical cores
          
          [alias: --jobs]

      --profile <PROFILE>
          The configuration profile to use

Wallet options - raw:
  -f, --from <ADDRESS>
          The sender account
          
          [env: ETH_FROM=]

  -i, --interactive
          Open an interactive prompt to enter your private key

      --private-key <RAW_PRIVATE_KEY>
          Use the provided private key

      --mnemonic <MNEMONIC>
          Use the mnemonic phrase of mnemonic file at the specified path

      --mnemonic-passphrase <PASSPHRASE>
          Use a BIP39 passphrase for the mnemonic

      --mnemonic-derivation-path <PATH>
          The wallet derivation path.
          
          Works with both --mnemonic-path and hardware wallets.

      --mnemonic-index <INDEX>
          Use the private key from the given mnemonic index.
          
          Used with --mnemonic-path.
          
          [default: 0]

Wallet options - keystore:
      --keystore <PATH>
          Use the keystore in the given folder or file
          
          [env: ETH_KEYSTORE=]

      --account <ACCOUNT_NAME>
          Use a keystore from the default keystores folder
          (~/.foundry/keystores) by its filename
          
          [env: ETH_KEYSTORE_ACCOUNT=]

      --password <PASSWORD>
          The keystore password.
          
          Used with --keystore.

      --password-file <PASSWORD_FILE>
          The keystore password file path.
          
          Used with --keystore.
          
          [env: ETH_PASSWORD=]

Wallet options - hardware wallet:
  -l, --ledger
          Use a Ledger hardware wallet

  -t, --trezor
          Use a Trezor hardware wallet

Wallet options - remote:
      --aws
          Use AWS Key Management Service.
          
          Ensure the AWS_KMS_KEY_ID environment variable is set.

      --gcp
          Use Google Cloud Key Management Service.
          
          Ensure the following environment variables are set: GCP_PROJECT_ID,
          GCP_LOCATION, GCP_KEY_RING, GCP_KEY_NAME, GCP_KEY_VERSION.
          
          See: [https://cloud.google.com/kms/docs](https://cloud.google.com/kms/docs)

      --turnkey
          Use Turnkey.
          
          Ensure the following environment variables are set:
          TURNKEY_API_PRIVATE_KEY, TURNKEY_ORGANIZATION_ID, TURNKEY_ADDRESS.
          
          See: [https://docs.turnkey.com/getting-started/quickstart](https://docs.turnkey.com/getting-started/quickstart)

Wallet options - Tempo:
      --tempo.access-key <PRIVATE_KEY>
          Tempo access key private key.
          
          When set, the transaction is signed with this access key on behalf of
          `--tempo.root-account`.
          
          [env: TEMPO_ACCESS_KEY=]

      --tempo.root-account <ADDRESS>
          Tempo root account address (the `from` address for keychain
          transactions).
          
          Required when `--tempo.access-key` is set.
          
          [env: TEMPO_ROOT_ACCOUNT=]

Wallet options - browser wallet:
      --browser
          Use a browser wallet

      --browser-port <PORT>
          Port for the browser wallet server

          [default: 9545]

      --browser-disable-open
          Whether to open the browser for wallet connection

Display options:
      --color <COLOR>
          The color of the log messages

          Possible values:
          - auto:   Intelligently guess whether to use color output (default)
          - always: Force color output
          - never:  Force disable color output

      --json
          Format log messages as JSON

      --md
          Format log messages as Markdown

  -q, --quiet
          Do not print log messages

  -v, --verbosity...
          Verbosity level of the log messages.
          
          Pass multiple times to increase the verbosity (e.g. -v, -vv, -vvv).
          
          Depending on the context the verbosity levels have different meanings.
          
          For example, the verbosity levels of the EVM are:
          - 2 (-vv): Print logs for all tests.
          - 3 (-vvv): Print execution traces for failing tests.
          - 4 (-vvvv): Print execution traces for all tests, and setup traces
          for failing tests.
          - 5 (-vvvvv): Print execution and setup traces for all tests,
          including storage changes and
            backtraces with line numbers.
```

:::