An apostrophe could hide an agent's payment: Franklin patches its wallet guard
BlockRun's wallet-equipped agent fixes shell parsing and resend approvals that could release a payment hold too early, according to its v3.49.9 notes.
A comment could hide the send
Franklin v3.49.9 patches a striking failure mode for an AI agent that can spend money: an apostrophe in a script comment could stop its payment analyzer from seeing the actual send. BlockRun’s October 17 release notes describe the example // Get the wallet's USDC balance inside a node -e command. The analyzer lost sight of the later writeContract, so a send returning a 502 response did not get the expected hold.
The new version treats unresolved quoting conservatively: the command counts as a possible send, and it cannot count as the reconciliation lookup needed to clear an unpaid record. The notes also describe fixes for Bash comments, escaped strings, command substitutions and heredocs. The maintainer says tests now run these command shapes through /bin/bash -c with stub binaries and compare the analyzer’s interpretation with what Bash actually executes.
Approval is not execution
A second fix concerns an approved resend after an earlier payment has an unknown outcome. Previously, the notes say, approving the attempt lifted the hold and stopped lookups from checking it even if the user subsequently denied the send at the permission prompt. That saved override could survive a resumed session.
In v3.49.9, the hold lifts only after the approved send actually runs and either succeeds or ends ambiguously. A denied prompt, a spending-hook veto or a definite failure before sending keeps it in place. The earlier attempt remains UNKNOWN: marking it failed or unpaid still needs a lookup, and the lookup remains possible. Override flags saved by v3.49.7 are discarded on load.
The release attributes both fixes to EmberTail’s rerun of a payment-safety audit against v3.49.7, covering 45 sessions on a simulated ledger. That is the maintainer’s account of the audit and fixes, not an independently reproduced result or evidence that users lost funds.
The agent around the wallet
Franklin is BlockRun’s Apache-2.0 standalone TypeScript agent harness, with research and trading workflows, model routing and paid tools. It is not itself a model provider. The CLI requires Node.js 20.19 or newer, with Node 22 LTS recommended; the documented installation is npm install -g @blockrun/franklin, or npx @blockrun/franklin without a global install. The payment-parser tests described here specifically use Bash; they do not establish equivalent behavior in every shell.
Free models need no wallet or API key. Paid models and tools use either a funded USDC wallet through x402 or prepaid BlockRun account credit with an API key. The README documents trade-plan approval in every permission mode, including --trust, a --max-spend ceiling and hooks that can veto spending. Those controls explain why the distinction between authorizing a retry, executing it and reconciling the earlier attempt matters. This release addresses specific gaps in that distinction; it is not a blanket guarantee against duplicate or mistaken payments.