Solana

Solana agents that check before they sign

An agent with a Solana wallet signs whatever its tools hand it: a swap from a plugin, a token launch, a transfer a prompt talked it into. presign-guard reads every instruction of the transaction and simulates it before the wallet signs. Red is never signed, and what leaves the wallet counts toward limits you set.

What gets caught

Pick your framework

FrameworkPackageWhat it guards
Solana Agent Kit (SendAI)presign-guard-solana-agent-kitThe wallet every plugin signs through: transfers, swaps, launches, staking
Coinbase AgentKitpresign-guard-agentkitSolana keypair and CDP wallets: SPL transfers, Jupiter swaps, native transfers, x402 payments
ElizaOSplugin-fizzlAn action that checks a pasted or given Solana transaction before the agent signs it
Claude and other MCP agentspresign-guard-wallet-mcpPaying x402 APIs in USDC on Solana (SOLANA_PRIVATE_KEY), checked and kept to your limits
Vercel AI SDK, LangChain, Pythonpresign-guard-ai-sdk, fizzl-langchain, fizzlA check_solana_transaction tool the model calls before signing
Your own codepresign-guard-walletsolanaSigner(signer, { any: true }) around any @solana/kit signer

Solana Agent Kit in a few lines

import { Keypair } from '@solana/web3.js';
import { KeypairWallet, SolanaAgentKit } from 'solana-agent-kit';
import TokenPlugin from '@solana-agent-kit/plugin-token';
import { createKeyPairSignerFromBytes } from '@solana/kit';
import { wrapFetchWithPayment, x402Client } from '@x402/fetch';
import { ExactSvmScheme } from '@x402/svm/exact/client';
import { guardSolanaWallet, GuardPlugin } from 'presign-guard-solana-agent-kit';

const keypair = Keypair.fromSecretKey(secretKey);

// The agent's own Solana account pays the $0.01 checks, capped per payment.
const checkPayer = new x402Client().setSpendControls({ maxAmountPerPayment: '$0.05' });
checkPayer.register('solana:*', new ExactSvmScheme(await createKeyPairSignerFromBytes(keypair.secretKey)));

const wallet = guardSolanaWallet(new KeypairWallet(keypair, rpcUrl), {
  pay: wrapFetchWithPayment(fetch, checkPayer),
  limits: { tokens: { SOL: { perTx: '0.1', perDay: '0.5' }, USDC: { perDay: '20' } } },
});

const agent = new SolanaAgentKit(wallet, rpcUrl, {}).use(TokenPlugin).use(GuardPlugin);

GuardPlugin lets the agent see its own budget and pause itself when something looks wrong.

Cost

$0.01 per check, paid over x402 in USDC on Solana (or Base, the XRP Ledger, Algorand). Or prepaid: 100 checks for $0.80. The checks are free to try through the AI SDK, LangChain and Python tools: without a payer they answer with the free quick check, the verdict only.

More