cabal/docs
Execution limits that apply to agent trading behavior.

Guardrails

Guardrails are saved execution limits for an agent. They shape what Cabal can prepare, approve, or execute when an agent is acting on your behalf.

Guardrails are most visible in the web app on the agent Control tab and in the CLI through cabal guardrails. They are stored in a versioned v1 schema.

Control profile matters

Guardrails are enforced according to the agent's control profile:

Control profileHow guardrails apply
suggest-onlyVenue guardrails are checked during simulation and approval preparation. Execution limits apply only to autonomous signal-triggered execution.
autonomous-guardrailedVenue guardrails are enforced in guarded trading paths. Execution limits apply to autonomous signal-triggered execution.
autonomous-unrestrictedSaved guardrails remain editable and preserved, but they are not enforced while Full Access is active.

If a trade or authority change needs user approval, Cabal should surface the relevant guardrail result before the action is submitted.

Schema shape

The canonical guardrail settings object is versioned:

json
{
  "version": 1,
  "common": {
    "maxPriceImpactPct": 5,
    "maxSlippagePct": 2
  },
  "solana": {
    "maxTradeSizeSol": 10,
    "allowedPrograms": [],
    "blockedAddresses": []
  },
  "ethereum": {
    "maxTradeSizeEth": 1,
    "allowedContracts": [],
    "blockedAddresses": [],
    "allowedChainIds": []
  },
  "execution": {
    "nativeReserveFloor": "0.05",
    "rollingDailyVolumeCapUsd": "5000",
    "minSignalValueUsd": "1",
    "maxSignalsPerSourcePerHour": 10,
    "minMarketLiquidityUsd": "1000",
    "minMarketAgeSeconds": 300
  },
  "hyperliquid": {
    "maxPositionSizeUsd": "5000",
    "maxOpenOrders": 20,
    "allowedCoins": ["SOL", "BTC"],
    "maxLeverage": 5
  }
}

All sections stay in one object so the web app, CLI, and orchestrator evaluate the same saved policy.

Common limits

FieldMeaning
common.maxPriceImpactPctMaximum price impact tolerated by prepared trades.
common.maxSlippagePctMaximum slippage tolerated by prepared trades.

Chain limits

FieldMeaning
solana.maxTradeSizeSolMaximum Solana trade size in SOL display units.
solana.allowedProgramsOptional allowlist of Solana programs.
solana.blockedAddressesSolana addresses the agent should not interact with.
ethereum.maxTradeSizeEthMaximum Ethereum trade size in ETH display units.
ethereum.allowedContractsOptional allowlist of EVM contracts.
ethereum.blockedAddressesEVM addresses the agent should not interact with.
ethereum.allowedChainIdsOptional allowlist of EVM chain ids.

Solana is the primary v0 execution path. Ethereum fields are part of the schema so future EVM paths can preserve the same settings object.

Execution limits

Execution limits apply to autonomous signal-triggered behavior and other guarded execution paths:

FieldMeaning
execution.nativeReserveFloorMinimum native asset reserve to keep available.
execution.rollingDailyVolumeCapUsdRolling daily notional volume cap.
execution.minSignalValueUsdMinimum signal value before autonomous execution is considered.
execution.maxSignalsPerSourcePerHourPer-source signal rate limit.
execution.minMarketLiquidityUsdMinimum market liquidity threshold.
execution.minMarketAgeSecondsMinimum market age before the agent can act.

Numeric string fields are strings on purpose. They preserve decimal precision across the web app, CLI, orchestrator, and database.

Hyperliquid limits

FieldMeaning
hyperliquid.maxPositionSizeUsdMaximum Hyperliquid position size in USD notional.
hyperliquid.maxOpenOrdersMaximum number of open orders.
hyperliquid.allowedCoinsOptional allowlist of coins. Values are normalized to uppercase.
hyperliquid.maxLeverageMaximum leverage allowed for prepared actions.

Hyperliquid account setup still requires the venue-specific readiness checks described in .

CLI

Read the saved guardrails:

bash
cabal guardrails read

Pull the current server-side settings into a local file:

bash
cabal guardrails pull

Propose an update:

bash
cabal guardrails propose-update guardrails.json

High-risk changes are treated as controlled authority changes. The CLI can prepare the intent, but browser confirmation may still be required before Cabal applies it.