Cross-Chain Session Key Propagation Tool
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Cross-Chain Session Key Propagation Tool is a developer-focused utility that registers and propagates session keys across multiple EVM-compatible chains. It reads the user's wallet address, the session key public key, session key expiration (in blocks), session key permissions (token approvals, function selectors, and allowed chain IDs), the target chain list, the session key manager contract address, existing session keys for the address, session key status (active/expired/revoked) on each chain, account nonce, gas estimates for session key registration, and previous session key propagation records. The tool then guides you through registering the session key on the source chain, propagating it to target chains via cross-chain messages or deployments, setting permissions, revoking old keys if needed, updating expiration, syncing status across all chains, and transferring any registration fees.
HOW TO USE
Connect your wallet via the built-in connector. Select the source network. Enter the session public key you wish to propagate. Enter the session key manager contract address. Provide a comma-separated list of target chain IDs. In the permissions text area, enter token addresses and function selectors (one per line) that the session key will be allowed to use. Specify the expiry in blocks from the current block. The tool will read on-chain data and display a preview including: session key, manager contract, target chains, permissions, expiry, wallet address, existing keys, current status, and estimated gas. Review all details carefully. Click "propagate session key" to execute the propagation process. The tool will guide you through four steps: registering on the source chain, propagating to targets, setting permissions, and syncing status.
TECHNICAL MECHANISM
The tool uses ethers.js v5.7.2 to interact with session key manager contracts across multiple chains. It reads existing session keys using `getSessionKeys(address)` and `getKeyStatus(address, key)` view functions. Session key status is checked via `isActive(address, key)` and `getExpiry(address, key)`. Permissions are read using `getPermissions(address, key)` which returns an array of token addresses and function selectors. Account nonce is read via `provider.getTransactionCount(address)`. Gas estimates are calculated using `estimateGas` on the manager's `registerKey()`, `propagateKey()`, `setPermissions()`, and `syncKey()` methods. For propagation, the tool constructs cross-chain messages using the manager's `propagate()` function, which emits events that are picked up by relayers on target chains. The tool also supports revocation via `revokeKey()` and expiration updates via `extendExpiry()`. All transactions are built with EIP-1559 fee data using `feeData` from the provider, and the tool uses `effectiveGasPrice` from receipts for accurate cost accounting. Previous propagation records are scanned using `eth_getLogs` with adaptive chunking (halving chunk size on failure) to handle different RPC limits.
WHAT IT CANNOT SEE
This tool cannot verify that the session key is securely stored off-chain—it only registers the public key. It cannot detect session key compromise after propagation; if the private key is leaked, the tool cannot revoke it automatically. It cannot guarantee that all target chains accept the propagated key—some chains may have different manager implementations. It cannot prevent replay attacks if nonce management on the target chains is flawed. It cannot validate that the session key permissions match the intended actions—it only sets what you provide. It cannot ensure that revocation is honored across all chains; some chains may not process the revocation message. It cannot detect if the session key manager contract has vulnerabilities or backdoors. It cannot verify that the key was generated securely—it only accepts the public key you provide.
PLEASE NOTE
This tool is EVM-only and supports Ethereum, Polygon, BNB Chain, Arbitrum, Optimism, and Avalanche. All transactions are signed by the connected wallet, and the user pays gas fees on each chain. Session keys grant significant permissions—ensure you trust the environment where the private key is stored. The tool does not store or transmit your session key. Always test on testnet before propagating on mainnet.