bullpen hyperliquid unify-account¶
Last updated: July 13, 2026
Migrate the active Hyperliquid account to unifiedAccount mode
Usage¶
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
{
"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.