Set policy and payments
policy.json is your app’s rule book. It tells Gora, wallets, and contracts what the app is allowed to request.
A good first policy is strict:
- one chain
- one action
- one or two recipients
- low amount limits
- manual mobile approval
Example policy
Important fields
| Field | Meaning |
|---|---|
allowed_actions | App result types that are allowed |
allowed_chains | Chains the app can target |
execution_modes | How an intent becomes an approved action or transaction |
max_amount_per_tx | Per-transaction limit in chain units |
max_amount_per_day | Daily limit in chain units |
allowed_recipients | Recipient allowlist |
payment_principles | Explicit statement of who holds keys and who pays |
Execution modes
| Mode | Meaning |
|---|---|
offchain_result | App returns a result with no chain execution |
manual_mobile_signature | User reviews and signs each action or transaction |
preapproved_agent_wallet | Agent can act through a limited wallet policy |
preapproved_smart_wallet | Smart wallet enforces limits approved ahead of time |
preapproved_logicsig | Algorand-style delegated logic or escrow policy |
preapproved_mobile_session | Mobile creates a limited session for repeated actions |
app_contract_paid | App contract pays or reimburses execution |
paymaster_sponsored | Paymaster or sponsor pays gas |
Who pays?
Gora does not assume it pays gas or holds keys. Pick one of these designs:| Payer | Common use |
|---|---|
| User wallet | Manual mobile signing, safest first test |
| Agent/smart wallet | User has pre-approved tight limits |
| App contract | App sponsors or reimburses users |
| Paymaster | Account-abstraction style sponsorship |
| Operator script | Devnet-only testing and fulfillment |
Manual mobile signing flow
Pre-approved flow
Units by chain
| Chain | Native token | Unit |
|---|---|---|
| Base/EVM | ETH | wei |
| Solana | SOL | lamports |
| Algorand | ALGO | microalgos |
Validate policy changes
After editingpolicy.json: