bullpen polymarket sweep-native-pol¶
Last updated: August 26, 2026
Move native POL accidentally sent to a Deposit Wallet via a gasless transfer.
Usage¶
Live Help¶
Move native POL accidentally sent to a Deposit Wallet via a gasless transfer.
This is different from `sweep-stranded --token MATIC/POL`, which moves wrapped WMATIC/POL ERC-20. Native POL is the Polygon gas token and must be transferred with a native-value recovery call.
The first release supports Deposit Wallet sources. Legacy Safe native-POL recovery stays support-only until the Safe recovery path is confirmed to carry native value.
Usage: bullpen polymarket sweep-native-pol [OPTIONS] --to <ADDRESS> --amount <AMOUNT>
Options:
--from <ADDRESS>
Source Deposit Wallet address. Defaults to your active Deposit Wallet when omitted
--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]
--to <ADDRESS>
Destination address (0x-prefixed). Required; use --unsafe-recipient for third-party addresses
--amount <AMOUNT>
Amount of native POL to sweep, in POL units (18 decimals max)
--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.
--unsafe-recipient
Allow sending to an arbitrary address, not just your own Bullpen-managed 0x wallet or Deposit Wallet
--dry-run
Print the transfer plan without submitting
-y, --yes
Skip confirmation prompt
--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:
# Preview a native POL recovery without submitting
bullpen polymarket sweep-native-pol --to 0x1111111111111111111111111111111111111111 --amount 0.25 --dry-run
# Preview from an explicit Deposit Wallet source
bullpen polymarket sweep-native-pol --from 0x2222222222222222222222222222222222222222 --to 0x1111111111111111111111111111111111111111 --amount 0.25 --dry-run --output json
# Review all recovery options without submitting anything
bullpen polymarket sweep-native-pol --help
Example Commands¶
bullpen polymarket sweep-native-pol --to 0x1111111111111111111111111111111111111111 --amount 0.25 --dry-run
bullpen polymarket sweep-native-pol --from 0x2222222222222222222222222222222222222222 --to 0x1111111111111111111111111111111111111111 --amount 0.25 --dry-run --output json
bullpen polymarket sweep-native-pol --help
bullpen polymarket sweep-native-pol --to 0x1111111111111111111111111111111111111111 --amount 0.25 --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 |
|---|---|---|---|
status |
string | no | dry_run for preview output |
dry_run |
boolean | no | Always true for the documented preview |
source_wallet_kind |
string | no | deposit_wallet |
source |
string | no | Source Deposit Wallet |
owner_eoa |
string | no | Owner controlling the source wallet |
active_eoa |
string | no | Active Bullpen wallet owner |
recipient |
string | no | Destination address |
amount_pol |
string | no | Human-readable native POL amount |
amount_wei |
string | no | Raw native POL amount |
balance_wei |
string | no | Source balance observed before submission |
relayer_path |
string | no | Deposit Wallet native-value batch route |
Example¶
Example output: This non-runnable command-and-response pair documents the JSON shape. Use the preview/live workflow in Example Commands when you intend to submit.
bullpen polymarket sweep-native-pol --to 0x1111111111111111111111111111111111111111 --amount 0.25 --dry-run --output json
{
"status": "dry_run",
"dry_run": true,
"source_wallet_kind": "deposit_wallet",
"source": "0x2222222222222222222222222222222222222222",
"owner_eoa": "0x1111111111111111111111111111111111111111",
"active_eoa": "0x1111111111111111111111111111111111111111",
"recipient": "0x1111111111111111111111111111111111111111",
"amount_pol": "0.25",
"amount_wei": "250000000000000000",
"balance_wei": "1000000000000000000",
"relayer_path": "deposit_wallet_wallet_batch_native_value"
}
Live (--yes --output json) output includes receipt and balance proof.
| key | type | nullable | notes |
|---|---|---|---|
status |
string | no | confirmed-success, degraded-success, or hard-failure |
operation |
string | no | sweep_native_pol |
route_owner |
string | no | Routing metadata for the native-POL sweep path |
submission_state |
string | no | Relayer state or outcome_unknown |
tx_hash |
string | yes | Confirmed Polygon transaction hash when known |
relayer_trace_id |
string | yes | Relayer transaction identity when known |
receipt_status |
string | no | Receipt proof state |
verification |
object | no | Normalized receipt and balance-delta proof |
balance_proof |
object | yes | Source/recipient balances, expected deltas, and actual deltas |
safe_to_retry |
boolean | no | False for submitted or ambiguous money movement |
next_diagnostic_command |
string | yes | Parser-valid reconciliation command when proof is incomplete |
A hard failure is printed as structured JSON before the command exits nonzero. Unknown submit outcomes are not retried automatically.
Error Envelope¶
When a Polymarket CLOB or gasless-relayer rejection coincides with a degraded Polymarket status page, the error envelope may include a polymarket_status object:
{
"polymarket_status": {
"page_status": "HASISSUES",
"status_url": "https://status.polymarket.com",
"affected_components": [
{"name": "CLOB API", "status": "PARTIALOUTAGE"}
],
"advisory": "Polymarket is experiencing issues; this rejection is most likely a Polymarket-side outage."
}
}
The field is omitted on local validation/auth/balance errors and when the status-page fetch times out or reports healthy relevant components.
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.