metamask-agent-wallet について
metamask-agent-wallet は、MetaMask Agent Wallet の `mm` コマンドラインインターフェースを解説するスキルです。エージェントが必要なコマンドリファレンスやワークフローを選ぶための内容で、ウォレット、取引、市場データ、スワップ、ブリッジ、運用益、予測市場を扱います。
主な機能
- 01意図に応じたコマンドリファレンスの案内
- 02ログイン、ウォレット、ポリシー操作の説明
- 03送金、署名、 raw transaction の解説
- 04トークン、価格、AI 市場サマリーの参照
- 05パーペチュアルと予測市場のワークフロー
- 06スワップ、ブリッジ、運用益の手順
活用シーン
- 01ウォレットのログインや初期設定コマンドの選択
- 02残高、価格、トークン情報の確認
- 03スワップやブリッジの手順の参照
- 04予測市場の注文や運用益の手順確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ metamask/ agent-skills --skill metamask-agent-walletインストール後、Claude Code で/metamask-agent-walletを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/auth.mdchain.mddecode.mddoctor.mdearn.mderrors.mdmarket-data.mdperps.mdplugins.mdpolling.mdpredict.mdsigning.mdswap.mdtransaction.mdtransfer.mdtx-history.mdwallet.mdx402.mdscripts/amount_to_hex.pyx402_pay.pyworkflows/bridge.mdearn-supply.mdearn-withdraw.mdlogin.mdmarket-data.mdonboarding.mdperps-close-position.mdperps-modify-position.mdperps-open-position.mdpredict-funding.md詳細
MetaMask Agentic CLI スキル
このスキルでは、MetaMask Agent Wallet の認証、ウォレットのライフサイクル、残高の照会、トークンの送金、メッセージと型付きデータの署名、生トランザクション、チェーンの検出、市場データ、トークンの検出、トークン化された実世界資産、AI による市場と資産の要約、無期限先物取引、予測市場取引、予測取引/償還履歴、トークンスワップ、クロスチェーンブリッジ、DeFi の運用益/利回りボールト、EVM calldata のデコードに関する mm CLI の機能を説明します。
ルーティングテーブルを使って、該当するリファレンスファイルを選択してください。CLI の動作は references/ にあります。繰り返し実行できる運用パターンは workflows/ にあります。
コマンドのルーティング
ユーザーの意図をコマンドとリファレンスファイルに対応付け、コマンドを組み立てる前にリファレンスを読んでください。意図が複数のドメインにまたがる場合は、依存関係の順に読み込んでください。
| ユーザーの目的 | コマンド | リファレンス |
|---|---|---|
| 認証状態を確認する | mm auth status | auth.md |
| MetaMask Agentic CLI にログインする | mm login | auth.md |
| ウォレットモードを選択してポリシーを設定する | mm init | auth.md |
| 現在の初期化設定を表示する | mm init show | auth.md |
| MetaMask Mobile で QR コードを使ってサインインする | mm login qr | auth.md |
| ブラウザー(Google または Email)でサインインする | mm login browser | auth.md |
| サインアウトする | mm logout | auth.md |
| CLI セッションをリセットする | mm reset | auth.md |
| CLI 設定を表示する | mm config get | auth.md |
| CLI 設定を行う | mm config set | auth.md |
| BYOK ニーモニック暗号化パスワードを設定する | mm wallet password set | auth.md |
| BYOK ニーモニック暗号化パスワードを変更する | mm wallet password change | auth.md |
| BYOK ニーモニック暗号化パスワードを削除する | mm wallet password remove | auth.md |
| CLI の未加工のエラーコードを解釈する | AuthError、ValidationError、WALLET_ERROR | errors.md |
| CLI、スキル、環境、セッションの状態を調べる | mm doctor | doctor.md |
| インストール済み CLI プラグインを一覧表示する | mm plugins | plugins.md |
| インストール済み CLI プラグインを調べる | mm plugins inspect | plugins.md |
| CLI プラグインをインストールする | mm plugins install | plugins.md |
| CLI プラグインを更新する | mm plugins update | plugins.md |
| CLI プラグインをアンインストールする | mm plugins uninstall | plugins.md |
| ユーザーがインストールした CLI プラグインをすべて削除する | mm plugins reset | plugins.md |
| 開発用にローカルのプラグインディレクトリをリンクする | mm plugins link | plugins.md |
| プラグインのベータ版を有効または無効にする | mm config set experimentalPlugins | plugins.md |
| EVM calldata を人が読めるインテントにデコードする | mm decode | decode.md |
| ウォレットを作成する | mm wallet create | wallet.md |
| すべてのウォレットを一覧表示する | mm wallet list | wallet.md |
| アクティブなウォレットを切り替える | mm wallet select | wallet.md |
| アクティブなウォレットの詳細を表示する | mm wallet show | wallet.md |
| アクティブなウォレットのアドレスを表示する | mm wallet address | wallet.md |
| アクティブなウォレットの残高を確認する | mm wallet balance | wallet.md |
| アクティブなウォレットに資金を追加するための QR コードとアドレスを表示する | mm wallet add-fund | wallet.md |
| 現在の取引モードを表示する | mm wallet trading-mode get | wallet.md |
| 取引モードを guard または beast に設定する | mm wallet trading-mode set | wallet.md |
| ウォレットポリシーを表示する | mm wallet policy get | wallet.md |
| ウォレットポリシーを設定する | mm wallet policy set | wallet.md |
| プロジェクトのポリシーテンプレートを表示する | mm wallet policy template | wallet.md |
| プレーンテキストメッセージに署名する | mm wallet sign-message | signing.md |
| EIP-712 の型付きデータに署名する | mm wallet sign-typed-data | signing.md |
| 生の EVM トランザクションを送信する | mm wallet send-transaction | transaction.md |
| ネイティブトークンまたは ERC-20 トークンを送金する | mm transfer | transfer.md |
| CLI がサポートするチェーンを一覧表示する | mm chains list | chain.md |
| 保留中のウォレットリクエストを一覧表示する | mm wallet requests list | polling.md |
| ウォレットのポーリング ID を監視する | mm wallet requests watch | polling.md |
| 現在価格または過去の価格を照会する | mm price ... | market-data.md |
| トークン、トークンネットワーク、またはトークンメタデータを検索する | mm token ... | market-data.md |
| 株式、ETF、CEF などのトークン化された実世界資産を一覧表示する | mm token rwas | market-data.md |
| 注目の AI 市場ハイライトを取得する | mm pulse | market-data.md |
| 1 つの資産について AI 生成の要約を取得する | mm pulse asset | market-data.md |
| AI 生成の市場全体の概要を取得する | mm pulse market | market-data.md |
| 無期限市場を一覧表示する | mm perps markets | perps.md |
| perps アカウントの残高を確認する | mm perps balance | perps.md |
| 保有中の無期限ポジションを一覧表示する | mm perps positions | perps.md |
| アカウントの資金調達支払いを一覧表示する | mm perps funding | perps.md |
| 市場の資金調達率の履歴を表示する | mm perps funding-rates | perps.md |
| 無期限注文の見積もりを取得する | mm perps quote | perps.md |
| 未約定の無期限注文を一覧表示する | mm perps orders | perps.md |
| 無期限ポジションを開く | mm perps open | perps.md |
| 無期限ポジションを決済する | mm perps close | perps.md |
| レバレッジ、テイクプロフィット、またはストップロスを変更する | mm perps modify | perps.md |
| 未約定の perps 注文をキャンセルする | mm perps cancel | perps.md |
| perps の取引場所に USDC を入金する | mm perps deposit | perps.md |
| perps の取引場所から USDC を出金する | mm perps withdraw | perps.md |
| 現物口座と perp 口座の間で USDC を送金する | mm perps transfer | perps.md |
| 無期限先物の取引場所を一覧表示する | mm perps list-venues | perps.md |
| 取引場所で利用可能な DEX を一覧表示する | mm perps dexs | perps.md |
| ウォレットのボールト持分を一覧表示する | mm perps vault list | perps.md |
| Hyperliquid ボールトの詳細を表示する | mm perps vault info | perps.md |
| Hyperliquid ボールトに USDC を入金する | mm perps vault deposit | perps.md |
| Hyperliquid ボールトから USDC を出金する | mm perps vault withdraw | perps.md |
| Hyperliquid アカウントモードを表示する | mm perps account mode get | perps.md |
| Hyperliquid アカウントモードを切り替える | mm perps account mode set | perps.md |
| Predict の取引モードを設定する | mm predict mode | predict.md |
| Predict の初回セットアップを行う | mm predict setup | predict.md |
| Predict の認証情報を作成または更新する | mm predict auth | predict.md |
| Predict の承認を修復する | mm predict approve | predict.md |
| Predict のバックエンド状態とアカウント設定を確認する | mm predict status | predict.md |
| Polymarket が IP アドレスで地域制限されているか確認する | mm predict geoblock | predict.md |
| 予測市場を一覧表示する | mm predict markets list | predict.md |
| 予測市場を検索する | mm predict markets search | predict.md |
| 予測市場を調べる | mm predict markets get | predict.md |
| Polymarket のイベントを一覧表示する | mm predict events list | predict.md |
| Polymarket のイベントを調べる | mm predict events get | predict.md |
| Polymarket のイベントシリーズを一覧表示する | mm predict series list | predict.md |
| Polymarket のイベントシリーズを調べる | mm predict series get | predict.md |
| Polymarket のタグを一覧表示する | mm predict tags list | predict.md |
| Polymarket のタグを調べる | mm predict tags get | predict.md |
| 予測注文のコストを事前確認する | mm predict quote | predict.md |
| 予測市場の注文を出す | mm predict place | predict.md |
| 予測注文をキャンセルする | mm predict cancel | predict.md |
| 予測市場のポジションを確認する | mm predict positions | predict.md |
| 未約定の予測注文を確認する | mm predict orders | predict.md |
| Predict のポートフォリオ全体のスナップショットを表示する | mm predict portfolio | predict.md |
| 償還可能な当選ポジションを一覧表示する | mm predict redeem list | predict.md |
| 当選ポジションを償還する | mm predict redeem | predict.md |
| Predict 入金ウォレットの残高を確認する | mm predict balance | predict.md |
| Predict 入金ウォレットに資金を入れる | mm predict deposit | predict.md |
| Predict 入金ウォレットから pUSD を出金する | mm predict withdraw | predict.md |
| 予測注文板を取得する | mm predict book | predict.md |
| Predict ジョブを監視する | mm predict watch | predict.md |
| Predict の取引履歴または償還履歴を一覧表示する | mm predict history | predict.md |
| 特定の市場の Predict 履歴を調べる | mm predict history get | predict.md |
| ハッシュでトランザクションを検索する | mm tx | tx-history.md |
| アクティブなウォレットの最近のトランザクションを一覧表示する | mm tx history | tx-history.md |
| スワップまたはブリッジの見積もりを取得する | mm swap quote | swap.md |
| トークンのスワップまたはブリッジを実行する | mm swap execute | swap.md |
| スワップまたはブリッジの状態を確認する | mm swap status | swap.md |
| 別のチェーンにトークンをブリッジする | mm swap execute | swap.md |
HTTP 402/x402 でペイウォールされたリクエストに支払う | python3 scripts/x402_pay.py | x402.md |
| x402 で保護された MCP ツール呼び出しに支払う | python3 scripts/x402_pay.py | x402.md |
| イールドボールトと APY を一覧表示する | mm earn markets | earn.md |
| イールドボールトのポジションを確認する | mm earn positions | earn.md |
| イールドボールトにトークンを預け入れる | mm earn supply | earn.md |
| イールドボールトからトークンを引き出す | mm earn withdraw | earn.md |
ワークフロー
CLI の動作については references/ に記載されています。繰り返し使えるパターンについては workflows/ に記載されています。ユーザーのリクエストが単一のコマンドではなくパターンの場合は、ワークフローファイルを読み込んでください。
| パターン | ワークフロー |
|---|---|
| 初回セットアップとオンボーディング | onboarding.md |
| ログインの流れ | login.md |
| トラブルシューティングの判断ツリー | troubleshooting.md |
| スワップの見積もり・確認・実行の流れ | swap.md |
| ブリッジの見積もり・確認・実行の流れ | bridge.md |
| パーペチュアルポジションを開く流れ | perps-open-position.md |
| パーペチュアルポジションを閉じる流れ | perps-close-position.md |
| パーペチュアルポジションを変更する流れ | perps-modify-position.md |
| Predict の初回セットアップと認証情報 | predict-setup.md |
| Predict ウォレットへの pUSD の入金または出金 | predict-funding.md |
| 予測市場の検索と閲覧 | predict-markets.md |
| 予測注文の見積もりと発注 | predict-place-order.md |
| Predict の注文とポジションの表示またはキャンセル | predict-manage-orders.md |
| Predict のポートフォリオの表示と賞金の引き換え | predict-portfolio.md |
| Predict の取引履歴と引き換え履歴の表示 | predict-history.md |
| トークンの検索、価格、マーケットデータ | market-data.md |
| 利回りを得るためのトークンの預け入れ | earn-supply.md |
| Earn ボールトからのトークンの引き出し | earn-withdraw.md |
HTTP 402(x402)で保護されたリクエストへの支払い | x402-pay.md |
| x402 で保護された MCP ツール呼び出しへの支払い | x402-mcp.md |
グローバルフラグ
すべての mm コマンドで、次のフラグを使用できます。
| フラグ | 短縮形 | 説明 |
|---|---|---|
--format | -f | 出力形式:text、json、または toon。TTY では text、パイプ接続時は json がデフォルトです |
--json | --format=json の省略形 | |
--toon | --format=toon の省略形 | |
--verbose | -v | stderr にデバッグログを表示します。トラブルシューティングに使用してください |
ユーザーが別の形式を明示的に要求しない限り、コマンド出力には常に --toon を使用してください。
mm plugins コマンドは例外です。oclif に由来し、これらのグローバルフラグを受け付けないため、mm plugins --toon は Nonexistent flag: --toon で失敗します。代わりに --json またはプレーンテキストを使用してください。plugins.md を参照してください。
事前確認
セッションで最初の CLI 操作を行う前に、以下の確認を順番に実行してください。
1. バージョンの互換性
このスキルは、frontmatter の cliVersion で指定されている @metamask/agent-wallet v7.3.0 用に作成されています。CLI を実行するには Node.js 22.18 以降が必要です。これより古いランタイムでは、CLI の読み込み前にすべてのコマンドが UNSUPPORTED_NODE を返して終了コード 1 で終了します。インストール済みのバージョンを確認します。
mm --version
インストール済みのバージョンは、@metamask/agent-wallet/ の後ろにある値です。例:@metamask/agent-wallet/7.3.0 darwin-arm64 node-v22.18.0。その major.minor を、固定されている cliVersion と比較します。必要に応じて、公開されている最新バージョンも確認します(ベストエフォートで行い、ネットワークエラーの場合は何も表示せずにスキップします)。
npm view @metamask/agent-wallet version
インストール済みの major.minor が固定されている cliVersion と異なる場合、またはインストール済みのバージョンが最新リリースより古い場合は、ユーザーに一度だけ警告して続行します。
バージョンの不一致:インストール済みの CLI は
<installed>、このスキルの対象は<cliVersion>、最新リリースは<latest>です。バージョンが揃うまで、このスキルに記載されているコマンド構文が不正確な場合があります。npm install -g @metamask/agent-wallet@latestで CLI を更新した後、プラグインマネージャーやskillsCLI など、スキルのインストールに使ったツールでMetaMask/agent-skillsのスキルを更新してください。
この確認はセッションごとに一度実行します。この確認を理由に操作をブロックしないでください。
2. 準備状況の確認 — 認証と初期化
mm doctor は準備状況を確認する唯一のコマンドです。セッションで最初の CLI 操作を行う前に実行します。
mm doctor
このコマンドは、authenticated の真偽値、initialized の真偽値、および hints のリストを表示します。mm doctor が authenticated: true と initialized: true の両方を報告するまで、ほかのコマンドは実行しないでください。認証と初期化は独立した確認事項です。プロジェクトでウォレットモードが未選択でもセッションが認証済みの場合があり、その場合、ウォレットを必要とするコマンドは実行前に NOT_INITIALIZED(「Project not initialized.」)で中断され、次のヒントが表示されます:mm init を実行してウォレットモードと取引モードを設定してください。
プロジェクトは、ウォレットモードが設定されている場合にのみ初期化済みとみなされます。また、server-wallet の場合は取引モードも設定されている必要があります。byok で必要なのはウォレットモードのみです。確認に mm init show を使わないでください。このコマンドは初期化済みのプロジェクトでのみ使用でき、未初期化のプロジェクトでは状態を報告せずに NOT_INITIALIZED を返します。
問題を解決したら、mm doctor を再実行し、ほかの作業を始める前に問題がないことを確認してください。
authenticated: false→workflows/login.mdに従ってください。初回設定の場合はworkflows/onboarding.mdに従い、mm loginを実行します。authenticated: trueかつinitialized: false→workflows/onboarding.mdに従ってmm initを実行し、ウォレットモードを選択してください。server-walletの場合は、取引モードも選択します。
安全ルール
これらのルールは、参照資料やワークフローの種類にかかわらず、すべての操作に適用されます。
入力の検証
コマンドを構築する前に、ユーザーが指定した値をすべて検証してください。
| フラグ | 検証ルール |
|---|---|
--to、--address、--vault | ^0x[0-9a-fA-F]{40}$ に一致する必要があります |
--amount | 0.5 や 100 のような、人間が読みやすい小数である必要があります。^\d+\.?\d*$ に一致する必要があります。スペース、セミコロン、パイプ、バッククォート、またはシェルのメタ文字は拒否してください |
--chain-id | 正の整数(^\d+$)である必要があります |
send-transaction の --payload | 有効な JSON である必要があります。JSON 構造の外側にエスケープされていないシェルのメタ文字があってはなりません |
decode の --payload | 0x で始まる有効な 16 進数の calldata であり、^0x[0-9a-fA-F]+$ に一致する必要があります |
--token | 有効な 16 進数のアドレス、または既知のシンボルである必要があります |
--leverage | 正の整数(^\d+$)である必要があります |
--size | 0.01 や 1 のような、人間が読みやすい正の小数である必要があります。科学的記数法およびホストのロケールに基づく桁区切りや小数表記は受け付けられ、CLI によって正規化されます。シェルのメタ文字は拒否してください。不正な値は INVALID_AMOUNT を返します |
--venue | hyperliquid である必要があります |
perps の --side | long または short である必要があります |
--tif | gtc、ioc、または alo である必要があります |
perps account の --mode | standard または unified である必要があります |
--order-id | 正の整数(^\d+$)である必要があります |
--token-id | 空でない outcome token ID 文字列である必要があります |
--price、--limit-price | 範囲 (0, 1] 内の正の数値である必要があります |
--order-type | GTC、GTD、FOK、FAK のいずれかである必要があります |
predict の --side | buy または sell である必要があります |
--slippage | 0 から 100 までの数値である必要があります |
--tick-size | 0.1、0.01、0.005、0.0025、0.001、0.0001 のいずれかである必要があります |
--from-chain-id、--to-chain-id | 正の整数の EVM チェーン ID である必要があります |
--to-address | ^0x[0-9a-fA-F]{40}$ に一致する必要があります。クロスチェーンスワップ(--to-chain-id が --from-chain-id と異なる場合)でのみ有効です。同一チェーンのスワップでは拒否されます |
--refuel | 値を取らないブール値フラグです。クロスチェーンスワップ(--to-chain-id が --from-chain-id と異なる場合)でのみ意味があります。同一チェーンのスワップには影響しません |
--strategy | 次の値から選ぶ、カンマ区切りのリストである必要があります:cost、speed、impact、output |
--wallet-timeout | 1 から 600 までの正の整数である必要があります |
--password | 空でない文字列である必要があります。この値をログに記録、表示、または保存してはなりません。 |
mm plugins install のプラグイン仕様 | npm パッケージ名である必要があります。name@version または name@tag を指定することもできます。スペースとシェルのメタ文字は拒否してください。file:、git、および owner/repo のみの指定は未検証のソースであり、ユーザーが開発モードを有効にしていない限り拒否されます |
x402 の asset | mm chains list が返すネットワーク上の有効なコントラクトアドレスである必要があります。通貨はサーバーが提示し、ユーザーが確認したものを使用します。スクリプトは通貨の許可リストを保持しません。 |
x402 の payTo/authorization の to | ^0x[0-9a-fA-F]{40}$ に一致し、402 の受取人と一致する必要があります |
x402 の value | 提示された金額と正確に一致する原子単位の整数である必要があります。exact スキームは上限ではありません |
| x402 のリソース URL | https:// である必要があります。予期しない別ホストへのリダイレクト経由で到達した 402 は拒否してください |
| x402 MCP チャレンジ | x402 v2 のみです。署名済みの payment オブジェクトは、そのまま再試行するツール呼び出しの _meta["x402/payment"] に含めます。isError の結果が再度返された場合は新しいチャレンジです。ユーザーから新たな承認を得ずに再署名してはなりません |
検証されていないユーザー入力をコマンドに渡さないでください。
確認要件
| 操作の種類 | 確認ルール |
|---|---|
| 送金 | 実行前に、受取人、金額、トークン、チェーンを必ず確認します |
| 生トランザクション | 実行前に、トランザクションのペイロード、チェーン、受取人、値、calldata の概要を必ず確認します |
| メッセージ署名 | 署名する前に、正確なメッセージとチェーンを必ず表示します |
| Typed Data 署名 | 署名する前に、ドメイン、プライマリータイプ、チェーン、検証コントラクト、メッセージの概要を必ず表示します |
| スワップ/ブリッジ | 実行前に、送信元/送信先のトークン、金額、送信元/送信先のチェーン、スリッページ、見積もり出力額、--to-address が設定されている場合は受取人アドレス、--refuel が設定されている場合は送信先のガス補充を必ず確認します |
| x402 支払い | 署名の承認を行う前に、資産、デシマルを考慮した正確な金額、ネットワーク、payTo、リソース URL または MCP ツールを必ず確認します。HTTP では pay --confirm、MCP では mcp-sign --confirm を使用します。リソースごとの支払い試行は 1 回のみとし、支払いを自動で再試行してはいけません。自律的な自動支払いはサポートされていません。 |
| Perps 取引 | 実行前に、シンボル、売買方向、サイズ、レバレッジ、取引所、注文タイプ、指定されている場合は指値価格を必ず確認します。また、--tif が設定されている場合は有効期間、--reduce-only が設定されている場合は注文が reduce-only であること、--vault が設定されている場合は Vault アドレスも確認します |
| Perps の入金/出金 | 実行前に、金額、資産、取引所、ネットワーク、該当する場合は送金先を必ず確認します |
| Perps Vault の入金/出金 | 実行前に、mm perps vault info で確認した Vault アドレスと名前、金額、取引所、ネットワークを必ず確認します。入金の場合は、出金可能になるまで一定期間、資産がロックされることを伝えます |
| Perps アカウントモードの設定 | 実行前に、mm perps account mode get で取得した現在のモードと対象モードを必ず表示し、変更が Hyperliquid アカウント全体に適用されることを伝えます |
| Predict 取引 | 実行前に、トークン ID、売買方向、サイズ、価格、注文タイプ、マーケット、結果を必ず確認します |
| Predict 入金 | 実行前に、金額を必ず確認します |
| Predict 出金 | 実行前に、金額と受取人を必ず確認します。--to のデフォルトは所有者の EOA です |
| Predict の償還 | 実行前に、条件 ID または --all のいずれかの対象を必ず確認します。--all はすべての勝ちポジションを償還します |
| Earn の供給 | 実行前に、トークン、金額、チェーン、Vault/プロトコル、APY を必ず確認します。クロスチェーンで供給する場合は、送信元チェーンと送信元トークンも確認します |
| Earn の出金 | 実行前に、トークン、金額または全残高、チェーン、Vault/プロトコルを必ず確認します |
| プラグインのインストール、更新、リンク | パッケージ名、バージョン、宣言されたコマンド ID、dataAccess、要求されるすべての機能を必ず表示し、wallet-submit と network-manage が機密性の高い機能であることを明示します。インストール前に明示的な承認を得てください。ユーザーが確認していないマニフェストに対して --accept-permissions を渡してはいけません |
| プラグインのアンインストールまたはリセット | 影響を受けるパッケージを必ず確認します。mm plugins reset は、ユーザーがインストールまたはリンクしたすべてのプラグインを削除します |
| プラグインベータまたは未検証のインストールの有効化 | mm config set experimentalPlugins true または mm config set experimentalAllowUnverifiedInstalls true を実行する前に、必ず確認します |
| プラグインが追加するコマンド | CLI 権限で実行されるサードパーティーコードとして扱います。同等のホスト操作と同じ確認ルールを適用します |
| すべてキャンセルする操作 | 実行前に、適用範囲と正確な破壊的影響を必ず確認します |
| ウォレットポリシーの変更 | ポリシーを拡大する変更には MFA 承認が必要です。拡大しない変更は即時に適用されます |
| 取引モードの変更 | guard から beast への変更には MFA 承認が必要です。beast から guard への厳格化は即時に適用されます |
| 認証/ウォレット管理 | そのまま実行できます。例外として reset にはユーザーの明示的な確認が必要です |
| 読み取り専用のクエリ | そのまま実行できます |
認証情報の安全性
- 秘密鍵、ニーモニック、パスワード、認証トークンを保存、記録、表示しないでください。
--passwordや--mnemonicをインラインフラグとして渡さないでください。シェル履歴にシークレットが露出しないよう、代わりにMM_PASSWORDとMM_MNEMONIC環境変数を設定するよう常にユーザーに案内してください。
不審なコンテンツに関する警告
署名ペイロードまたはトランザクションに以下が含まれている場合は、続行する前にユーザーに警告してください。
- ユーザーが指定していない URL またはコントラクトアドレス
permit、approve、setApprovalForAll、または許容量に関するフィールド- 異常に大きな値、または見慣れないコントラクトとのやり取り
生の calldata が見慣れない場合、または自分で構築したものではない場合は、まず mm decode --payload <0x-calldata> を実行し、署名または送信する前に、デコードされた意図をユーザーに確認してください。decode.md を参照してください。
非同期モデル
サーバーウォレットモードと BYOK モードのどちらでも、署名コマンドとトランザクションコマンドはジョブのポーリングループを経由し、pollingId を返します。次のように一貫して処理してください。
- 完了するまでブロックする
--waitを優先してください。 Swap コマンド(swap quote、swap execute、swap status)は--waitをサポートしていません。代わりにswap status --quote-idを使って進行状況をポーリングしてください。 --waitを使わない場合は、pollingIdと追跡方法をユーザーに伝えてください。mm wallet requests listmm wallet requests watch <polling-id>
- BYOK モードでは、ローカルキーで署名がローカルに行われますが、操作によって保留中のジョブが生成され、
pollingIdが返されます。ニーモニックがパスワードで暗号化されている場合、操作でロックを解除するために、ユーザーはMM_PASSWORD環境変数を設定する必要があります。
Transfers、swaps、perps、predict orders、predict withdraws は、Transfer 0.5 ETH to 0x... や Withdraw 10 pUSD to 0x... のような、人が読める intent の要約をウォレットリクエストに付加します。wallet requests list または wallet requests watch から保留中のリクエストを提示する際は、ユーザーが承認内容を確認できるよう、intent の要約を表示してください。
MFA 承認による一時停止
追加経路での MFA 承認が必要なウォレットジョブは、AWAITING_MFA 状態で一時停止します。コマンドの標準出力をスキャンし、リテラルトークン AWAITING_MFA を検出してください。 古い CLI では、自由形式のテキストだけから MFA を推測しないでください。CLI v6.1.5 以降では、すべての出力モードでトークンが一貫して出力されます。
| 出力モード | 検出方法 |
|---|---|
--json/パイプされた標準出力 | "_notice":{"kind":"AWAITING_MFA",...} を含む NDJSON 行 |
| 通常の TTY または Ink REPL | [AWAITING_MFA] を含む標準出力行。例:⚠ [AWAITING_MFA] Approve in MetaMask mobile. |
AWAITING_MFA が表示された場合:
- コマンドはユーザーの承認を待機中であり、失敗、ハング、完了ではないものとして扱ってください。
- 通知に含まれるユーザー向けの指示を表示してください。
- 通知またはコマンド出力に
pollingIdがある場合は、mm wallet requests watch <polling-id>で完了を追跡できることをユーザーに伝えてください。 - ジョブがまだ保留中の間は、同じウォレット操作を再試行しないでください。
mm swap execute、mm earn supply、またはmm earn withdrawでは、ハッシュがまだない状態で MFA により一時停止すると、承認待ちとmm wallet requests watch <polling-id>を示すメッセージとともにEXECUTE_FAILEDが返される場合があります。これは MFA による一時停止であり、ハッシュの欠落ではありません。
承認画面と復旧手順については、troubleshooting.md を参照してください。
応答スタイル
- 内部でルーティングし、どのリファレンスを読み込んでいるかは知らせないでください。
- コマンドのエラーはそのまま表示してください。隠したり、言い換えたりしないでください。
- コマンドが失敗した場合は、
mm <command> --helpを確認し、その内容に沿って案内してください。