Repository navigation
v4.121.0
KMS-backed wallets, and sending from a wallet
A wallet can now live in AWS KMS: the private key never leaves KMS, and no wallet file, process, or transcript holds it.
Wallets backed by a KMS key
run402 wallets import <name> --kms <key-arn> [--aws-profile <profile>](SDKr.wallets.import(name, { kms: { keyId, awsProfile? } })) adopts an existingECC_SECG_P256K1/SIGN_VERIFYkey by reference. It only reads the public key; the profile holds the ARN and no secret.- Everything that signs works the same under
--wallet <name>: SIWX sign-in, x402 payments, MPP on Tempo, identity links, CI delegation, org adopt. The client hashes locally, KMS signs the digest, and the result is checked to recover to the wallet's address (SIGNER_ADDRESS_MISMATCHotherwise). Signatures are byte-identical to a key-backed wallet's. - Named failures with their remedy:
KMS_SIGNER_UNAVAILABLE(e.g. an expired SSO session →aws sso login --profile <p>),KMS_ACCESS_DENIED(names the caller),KMS_KEY_UNSUITABLE,BAD_KMS_KEY_ARN. run402 wallets list/currentreportsigner: "local" | "aws_kms". Removing a KMS wallet deletes only the local profile.
Sending money
run402 wallets send <amount> --to <address> [--from <smart-account>] [--network base|base-sepolia|tempo|tempo-moderato] [--confirm](SDKr.wallets.send) sends USDC on Base or pathUSD on Tempo (the Tempo fee is paid in pathUSD) from a key-backed or KMS-backed wallet.--fromsends from a CoinbaseSmartWallet the wallet owns.- Without
--confirmit checks balances, ownership and gas and prints a preview, signing nothing. With it, it reports the minedtx_hashand explorer URL, orSEND_REVERTEDwith the hash. A short balance isSEND_INSUFFICIENT_BALANCEnaming the asset and shortfall. - The MCP
runsandbox refuseswallets.sendwithVALUE_TRANSFER_REQUIRES_CLIand the CLI command.
Changed
signCiDelegationandsignOrgAdopt(@run402/sdk/node) are now async:awaitthem.@aws-sdk/client-kmsis an optional peer of@run402/sdk(loaded only for a KMS wallet) and a dependency ofrun402andrun402-mcp, which adds about 14 MB to those installs.