MetaMask / MetaMask/agent-skills

[agent-wallet CLI] BYOK sign-typed-data returns APPROVED without signature

Open
#45 0 comments 0 reactions 0 assignees View on GitHub

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

  1. Initialize/select a BYOK EVM wallet and confirm the mode:

    mm init show
    

    Expected setup output includes:

    {
      "walletMode": "byok"
    }
    
  2. 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:

  • WalletSignTypedDataCommand only includes signature when the wallet executor result contains a non-empty signature.
  • The CLI wallet executor invokes signEvmTypedData with wait: false.
  • In this BYOK path, the operation returns terminal APPROVED status without either signature or a pendingJob, so there is nothing for the command to poll and the output silently omits signature.

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.