Program reference

Error codes

Thirty-nine errors, grouped by subject. The message column is the program's own text, verbatim, which is what an Anchor client surfaces.

Splits and basis points#

ErrorMessageRaised by
SplitNotWholesplits must sum to 10000 bpsinit_policy, set_policy
BankrollShareTooHighbankroll share exceeds the protocol ceilinginit_policy, set_policy
BpsOutOfRangebps value out of rangeinitialize, set_protocol_params, init_policy, set_policy

Authority and signers#

ErrorMessageRaised by
NotAuthoritysigner is not the policy authorityevery admin and authority instruction, and route when the fee destination does not match the config
NotAgentsigner is not the policy agentagent_fund_venue, note_credit
NotGuardiansigner may not pauseset_paused
NotReportersigner is not the protocol's reporterreport_remote_equity

Policy and protocol state#

ErrorMessageRaised by
PolicyLockedpolicy is locked and its split can never changeset_policy
PolicyPausedpolicy is pausedevery money instruction except report_remote_equity
ProtocolPausedprotocol is pausedevery money instruction, and init_policy
WrongModethis instruction does not run in the policy's modepassive_deploy, agent_fund_venue
WrongOriginorigin does not match the one recorded on the policyset_policy, register_venue_account

Venues and asset classes#

ErrorMessageRaised by
VenueNotAlloweddestination is not an allowlisted venue accountevery path that reads venue accounts
VenueSetIncompleteevery registered venue account must be supplied, in ascending key order, with no repeatspassive_deploy, agent_fund_venue, sweep_profit
VenueNotWiredthe venue adapter has not been wired for this deploymentevery passthrough, when the CPI target is not the pinned program
NotRemoteVenuevenue account is not Remotereport_remote_equity
NotTargetAssetvenue account's asset mint does not match the policy's target assetpassive_deploy
BadAssetClassasset class must be exactly one known bitregister_venue_account
AssetClassNotInOriginthis agent origin may not trade that asset classregister_venue_account
EmptyAssetMaskasset class mask may not be emptycreate_origin
WrongMinttoken account is not held in the quote mintregister_venue_account, and every context that takes a quote mint or the base mint

The launch pool#

ErrorMessageRaised by
NotTheLaunchPoolpool account is not this pair's LaunchLab poolinit_policy, when the supplied pool is not at the derived address, is not owned by the pinned LaunchLab program, is too short, carries the wrong discriminator, or names different mints
PoolCreatorNotPolicythe LaunchLab pool does not name this policy as its creator, so the launch's fees would be paid elsewhereinit_policy, when the pool is genuine but its creator is not this policy's address

Both exist so a policy cannot be created against a fee stream it will never receive. See how a launch works.

The venue passthrough#

Both of these are new as of 2026-09-23, and both exist because a forwarded venue instruction is chosen by the caller. They are the error codes of the two security fixes described on the safety model.

ErrorMessageRaised by
NotTheClaimInstructionclaim_fees may only forward LaunchLab's claim_creator_fee, which takes no argumentsclaim_fees, when the forwarded data is not exactly the 8 byte claim_creator_fee discriminator. Not a prefix match: appended bytes are refused too.
VenueSpentEscrowa claim may only credit the escrows, and the forwarded venue instruction spent one of themclaim_fees, when either escrow is lower after the call than before it. A claim credits; it never spends.

There is no equivalent pair for compound_lp or buyback_and_burn, because those two withhold the signature instead: each signs as an authority that owns only its own staged balance, so there is nothing else for a forwarded instruction to reach.

Risk and leverage#

ErrorMessageRaised by
RiskOutOfRangerisk must be between 0 and 100initialize, create_origin, init_policy, set_policy
RiskAboveOriginrisk exceeds what this agent origin permitsinit_policy, set_policy
RiskBelowAssetClassrisk is not dialled high enough for this asset classregister_venue_account
RiskCapExceededthis would deploy more of the bankroll than the risk setting allowspassive_deploy, agent_fund_venue
LeverageTooHighleverage exceeds the 5x hard capinit_policy, set_policy
NotionalTooHighreported notional exceeds 5x the reported equityreport_remote_equity

Attestation#

ErrorMessageRaised by
FutureAsofa remote equity attestation may not be dated in the futurereport_remote_equity beyond the skew window, and the equity summing path for an attestation more than the skew window ahead
StaleRemoteEquityremote equity attestation is older than the protocol allowsthe equity summing path, so every deployment and every sweep

Everything else#

ErrorMessageRaised by
NothingToDonothing to doclaim_fees, route, compound_lp, passive_deploy, agent_fund_venue, sweep_profit, buyback_and_burn, burn_base_leg, note_credit
Overflowarithmetic overflowevery checked arithmetic path
ModelNotFoundmodel is not in the registry at the id recorded on chaininit_policy and set_policy in Agent mode
ModelDisabledmodel is not currently enabledinit_policy and set_policy in Agent mode
NameTooLongname is too longcreate_origin, register_model
ProviderTooLongprovider name is too longregister_model

Overflow used to be reused for a bound check, and is not any more

compound_lp once returned Overflow when the spend exceeded the caller-supplied max_in, which was a bound violation wearing an arithmetic error's message. That argument is gone entirely, so the message is now accurate everywhere it appears.

The four you will actually hit#

ErrorWhat it usually meansFix
RiskBelowAssetClassA perps or options policy was created below risk 80. The gate is in register_venue_account, not init_policy, so it fails later than expected.Raise the risk with set_policy, if the policy is not locked. A locked policy below the threshold can never register that venue.
VenueSetIncompleteA money path was called without all venue accounts, or with them out of order.Supply exactly venue_count * 2 remaining accounts, sorted by token account address ascending, with no duplicates.
StaleRemoteEquityThe attestor has stopped, or its last report is older than max_remote_staleness, which is 120 seconds on this deployment.Post a fresh attestation. This is intended behaviour: it freezes funding rather than letting money leave against a number nobody checked.
NothingToDoThe instruction had no work. A claim that moved nothing, an empty escrow, equity at or below the high water mark.Usually nothing. On claim_fees against a StonkFun launch it is expected and permanent: that launch type pays by forwarding into the escrow rather than by filling a vault to claim, so there is never anything to claim. Call route instead. See what is not built yet.