Port Conflicts (EADDRINUSE)
Symptom
Solution
Alternative: Use Different Ports
Configure custom ports in.env:
.env
Escrow Configuration Issues
Health Check Says “Not Configured”
Symptom
Solution
Health Check Says “Not Deployed”
Symptom
Solution
Deploy the escrow program to devnet:- Syncs the program ID in source files
- Builds the Anchor program
- Deploys to devnet
- Updates
.envwith the deployed program ID
Ensure you have sufficient SOL in your deployment wallet (set via
PRIVATE_KEY in .env).Approval Gate Transactions Not Progressing
Symptom
Transaction is stuck inapproval_gate stage:
Solution
Transactions requiring approval must be explicitly approved or rejected:List Pending Approvals
Find all transactions waiting for approval:Why Transactions Require Approval
Why Transactions Require Approval
The policy engine can return three decisions:
- allow - Transaction proceeds automatically
- deny - Transaction is rejected immediately
- require_approval - Transaction pauses at approval gate
require_approval when:- Transaction exceeds spending limits but is within an “operator review” threshold
- Agent is in supervised mode
- Protocol or token is on a watchlist
- Custom policy rules require human review
Transfer Fails with Rent Error
Symptom
Solution
Solana accounts must maintain a minimum balance for rent exemption. If the recipient account is unfunded:The rent-exempt minimum for a system account is approximately 890,880 lamports (0.00089088 SOL).
DEX or DeFi Protocol Failures
Symptom
Solution
Protocol adapters are fail-closed for safety. Upstream API outages return errors instead of synthetic success.Why Fail-Closed?
Why Fail-Closed?
Fail-closed design prevents:
- Silent failures masquerading as success
- Agents proceeding with stale or invalid quotes
- Execution at unfavorable rates due to simulation drift
Environment Variables Not Loaded
Symptom
Services start but behave as if configuration is missing:- Escrow reports “not configured” even though
ESCROW_PROGRAM_IDis in.env - Gateway rejects valid API keys
- RPC pool uses only the default endpoint
Solution
Export environment variables to the shell before starting services:Verify Environment
Check that variables are actually set:Transaction Stuck in “Submitting” Stage
Symptom
submitting for an extended period.
Diagnosis
Check RPC Pool Status
Verify RPC endpoints are healthy:Look for:
- Low health scores (< 0.5)
- High failure counts
- All endpoints with recent errors
Solutions
The outbox queue will automatically retry failed submissions up to
TX_OUTBOX_MAX_ATTEMPTS times (default: 6).Database Lock Errors
Symptom
Solution
Check for Stale Locks
Look for Remove stale WAL files if no processes are running:
-wal and -shm files:Debugging Transaction Failures
Get Transaction Details
stage- Where the transaction failedstatus- Current status (failed,pending, etc.)error- Error messagefailedAt- Deterministic failure stagehistory- Stage transition log
Get Execution Proof
- Intent payload
- Policy decision
- Simulation result
Get Replay Data
- Original request
- Policy evaluation
- Simulation output
- Proof artifacts
- Stage history
Query Audit Events
- Transaction created
- Policy evaluated
- Simulation completed
- Signature generated
- Submission attempts
- Confirmation or failure
Common Failure Stages
Common Failure Stages
- validation - Request schema or parameter validation failed
- policy - Policy engine denied the transaction
- build - Protocol adapter failed to build transaction
- sign - Wallet engine could not sign (missing key, incorrect signer backend)
- send - RPC submission failed
- confirm - Transaction did not confirm within timeout
Getting Help
If you encounter an issue not covered here:Review Documentation