MetaMask / MetaMask/agent-skills
[agent-wallet CLI] BYOK sign-typed-data returns APPROVED without signature
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 7
- Forks
- 14
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 5
Description
Summary
mm wallet sign-typed-data reports a successful BYOK signing operation (status: "APPROVED") but omits the signature field entirely. This makes the command unusable for EIP-712 consumers even though it exits successfully.
I am filing this in MetaMask/agent-skills because the npm package metadata and README point to https://github.com/MetaMask/agentic/issues, but that repository currently returns 404 to a logged-in GitHub user. Please transfer this issue to the canonical Agent Wallet CLI repository if appropriate.
Environment
- Package:
@metamask/agent-wallet@6.1.4 - npm latest at reproduction time:
6.1.4 - Platform: macOS, darwin-arm64
- Node.js:
v25.6.1 - Wallet mode:
byok - BYOK mnemonic: password-protected
Steps to reproduce
-
Initialize/select a BYOK EVM wallet and confirm the mode:
mm init showExpected setup output includes:
{ "walletMode": "byok" } -
Unlock the BYOK mnemonic using the CLI's supported password mechanism, then run:
mm wallet sign-typed-data \ --chain-id 8453 \ --payload '{"domain":{"name":"TypedDataRepro","version":"1","chainId":8453},"types":{"Verification":[{"name":"message","type":"string"}]},"primaryType":"Verification","message":{"message":"test"}}' \ --intent 'Reproduce BYOK typed-data signature output' \ --json
Actual result
The command exits successfully but returns no signature:
{
"ok": true,
"data": {
"mode": "byok",
"address": "0x<redacted>",
"status": "APPROVED"
}
}
Expected result
Successful BYOK signing should return the EIP-712 signature documented by the command surface, for example:
{
"ok": true,
"data": {
"mode": "byok",
"address": "0x<redacted>",
"status": "APPROVED",
"signature": "0x<65-byte-signature>"
}
}
If no signature is available, the command should fail rather than return ok: true.
Implementation observation
In the distributed 6.1.4 bundle:
WalletSignTypedDataCommandonly includessignaturewhen the wallet executor result contains a non-empty signature.- The CLI wallet executor invokes
signEvmTypedDatawithwait: false. - In this BYOK path, the operation returns terminal
APPROVEDstatus without eithersignatureor apendingJob, so there is nothing for the command to poll and the output silently omitssignature.
This is particularly risky for automation because a successful exit and APPROVED status can be mistaken for a usable signature.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with WalletSignTypedDataCommand and the CLI wallet executor described in the issue, then trace the signEvmTypedData call and its wait:false behavior. Reproduce the command with --json and verify that a successful BYOK result includes the EIP-712 signature, or fails instead of reporting APPROVED without one.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- node.js
- Domain
- blockchain, cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100