Skip to content

bullpen hyperliquid unify-account

Last updated: July 13, 2026

Migrate the active Hyperliquid account to unifiedAccount mode

Usage

bullpen hyperliquid unify-account [OPTIONS]

Live Help

Migrate the active Hyperliquid account to unifiedAccount mode

Usage: bullpen hyperliquid unify-account [OPTIONS]

Options:
      --dry-run
          Show current/target abstraction mode without signing or submitting

      --no-multi-wallet-warning
          Suppress the table-mode warning shown when multiple EVM wallet accounts exist

      --output <OUTPUT>
          Output format for command results

          [possible values: table, json]

      --env <ENV>
          Target environment to connect to (overrides config.toml)

          [env: BULLPEN_ENV=]
          [possible values: staging, production]

  -y, --yes
          Skip confirmation prompt

      --config <CONFIG>
          Path to a custom config.toml file (overrides $BULLPEN_CONFIG and the default location).

          Explicit --config and BULLPEN_CONFIG paths fail closed: if the file is missing, the CLI exits validation instead of silently loading defaults. Credentials still resolve via BULLPEN_HOME, so set BULLPEN_HOME too when isolating a session.

      --read-only
          Enable read-only mode: blocks all mutating commands

      --non-interactive
          Suppress interactive prompts; does NOT imply --yes for money-moving commands

          [env: BULLPEN_NON_INTERACTIVE=]

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

EXAMPLES:
  # Inspect the planned migration without signing or submitting
  bullpen hyperliquid unify-account --dry-run

  # Export the planned migration as JSON
  bullpen hyperliquid unify-account --dry-run --output json

SAFETY:
  This is an irreversible Hyperliquid account-state migration. The command is
  idempotent for accounts already in unifiedAccount or portfolioMargin mode.
  Live migration requires --yes or an interactive confirmation.

VALIDATION NOTE: Dry-run is the safe default. Do not present --yes migration as
  broadly validated until live validation, copy review, and safety review pass or are explicitly deferred.

Example Commands

bullpen hyperliquid unify-account --dry-run
bullpen hyperliquid unify-account --dry-run --output json

JSON Output

Contract: JSON Output Contract.

Successful output is a single JSON document. The shape below is representative for this command family; commands may add fields without breaking the shared contract.

Schema version: 1 when a command emits schema_version; otherwise treat the current command shape as contract version 1.

Top-level Keys

key type nullable notes
schema_version integer yes JSON schema version for live reports; preview output follows the mutation-preview contract
kind string no hyperliquid_mutation_preview for dry-run or hyperliquid_unify_account_report for live/report output
action string no Always unify-account
account string no Active Hyperliquid account
current_mode string no Current Hyperliquid user-abstraction mode from userAbstraction
target_mode string no Target unified-compatible mode, currently unifiedAccount
already_unified boolean no True when no exchange submit is needed
needs_conversion boolean no True when the account needs migration
would_submit boolean no True when live execution would submit userSetAbstraction
submitted boolean no True only after a live exchange submit succeeds
post_mode string yes Post-submit mode observed during live verification; null in dry-run output
requires_confirmation boolean no True for dry-run output that would need explicit live confirmation
submitted_nonce integer yes Nonce submitted to Hyperliquid for live migration; null in dry-run output

Example

Example JSON output
bullpen hyperliquid unify-account --dry-run --output json
{
  "kind": "hyperliquid_mutation_preview",
  "action": "unify-account",
  "account": "0x1111111111111111111111111111111111111111",
  "would_submit": false,
  "signature_requested": false,
  "exchange_request_submitted": false,
  "current_mode": "disabled",
  "target_mode": "unifiedAccount",
  "already_unified": false,
  "needs_conversion": true,
  "submitted": false,
  "post_mode": null,
  "requires_confirmation": true,
  "intent": {
    "action": "unify-account",
    "account": "0x1111111111111111111111111111111111111111",
    "abstraction_current_mode": "disabled",
    "abstraction_target_mode": "unifiedAccount",
    "abstraction_would_submit": true
  }
}

Stability

Patch releases may add nullable or optional fields. Minor releases may add required fields or increment schema_version. Major releases may remove or rename fields.