Changelog

Every release of the two packages, newest first, with the date it reached npm and a plain summary of the change. Security releases name the number of disclosed issues they close; the full disclosure table is on the security page. Live health is on the status page.

CogmemAi (cogmemai-mcp)

40 most recent releases. Package on npm. Source on GitHub.

The Safe Memory That Keeps Ai in Line

No code change. The package now says plainly what Guard and Review are for: the Ai you run should never be the one in the rogue-Ai headlines.

npm

Maintenance release.

npm

Maintenance release.

npm

A Character Budget for Recall

Long memories are worth keeping, and expensive to load ten at a time: every tool result stays in the conversation and is read again on each later turn. recall_memories now takes an optional max_chars. With a budget, the best-ranked memories come back complete and the rest come back as 400-character snippets that keep their id, type, subject and score, each...

npm

Sign In Instead of Pasting a Key, and Tool Annotations

The hosted endpoint https://hifriendbot.com/mcp/ now speaks OAuth 2.1: an MCP client that supports it (hosted assistants, desktop assistants, Cursor and others) discovers the authorization server from the endpoint's 401, registers itself, sends you to a CogmemAi consent page to sign in, and gets a token with PKCE; API keys keep working exactly as before....

npm

Maintenance release.

npm

Migrate: the Cloud Migration Playbook

npx cogmemai-mcp migrate assess --target aws (or azure, gcp) reads the repository and produces the migration in one run: an inventory (languages, frameworks, data stores, cloud SDKs, infrastructure as code, containers, CI, scheduled jobs, environment variable names, external hosts, secret-looking files; names and counts only, no file contents and never a...

npm

Maintenance release.

npm

Rule Packs: a Security Policy in One Command

npx cogmemai-mcp rules install devsecops installs 40 ready-made rules covering secrets, infrastructure as code, least privilege, network exposure, CI/CD gates, change control, containers and Kubernetes, data handling, logging and incident response, plus the rules an Ai agent on your infrastructure must obey. Each rule is an ordinary rule memory: its shell...

npm

The Review Works Outside Git

The end-of-turn review used to need a git repository, because it read git diff. Most folders people work in from a home directory are not repositories, and neither are most non-coders' projects. v3.29.0 reads this session's edit events instead (the PostToolUse hook already records every Edit and Write), builds the same diff shape from them, checks the added...

npm

Maintenance release.

npm

Guard and Review for Everything, Not Only Code

Until now the guard judged shell commands and the intent review judged code diffs, because those were the hooks a coding tool gave us. v3.28.0 opens both to any Ai through two tools and two REST endpoints:

npm

Maintenance release.

npm

Maintenance release.

npm

CogmemAi Intent: You Read the Intent, Not the Code

Spec files that live in a repository are per-repo, per-tool, and they rot. v3.26.0 adds one plain-English intent document per project that lives with you instead: what the project is for, what must always hold, what was decided and why, and what is out of scope. Write it with set_intent, read it with get_intent.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

CogmemAi Guard: Your Memory Now Stops Your Ai From Repeating Mistakes

Memory that only advises is memory your Ai can ignore under pressure. v3.24.0 adds a guard that turns what your project remembers into enforcement.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Loud Failures on Firewall Blocks

When a request to the CogmemAi backend is intercepted by an upstream firewall, CDN, or proxy, the response is HTML, not JSON. Earlier versions tried to JSON-parse it and threw a confusing Unexpected token '<' error, then silently retried the same blocked payload. v3.20.0 detects HTML responses, names the blocking layer when it can (NinjaFirewall...

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Maintenance release.

npm

Autonomous Memory: Your Ai Doesn't Decide Whether to Save Anymore

Every memory system has the same hidden failure mode: the Ai has to choose to save, and under pressure it doesn't. You can bake instructions into system prompts.

npm

Maintenance release.

npm

Maintenance release.

npm

AgentWallet (agentwallet-mcp)

40 most recent releases. Package on npm. Source on GitHub.

A bare policy filename resolves its ledger beside it, not inside it. Closes 1 disclosed issue, highest severity Low.

  • Low Reported privately: loadPolicy found the policy file's directory by stripping everything after the last slash, so a bare relative filename (AGENTWALLET_POLICY=policy.json, no slash) was left whole and became the...
npmGitHub release

A hostname is canonical before the policy sees it; the mint prices an SPL send. Closes 2 disclosed issues, highest severity Medium.

  • Medium Reported privately (twice, by the same researcher): the policy matcher compared the hostname as the URL parser returned it, and Node keeps the DNS root label's trailing dot (and decodes a percent-encoded one into it)...
  • Low Reported privately: in hosted mode the policy priced an SPL send at the caller's token_decimals whenever one was given, reading the mint only when the hint was absent, so 1,000 USDC sent with token_decimals: 18 was...
npmGitHub release

The native value carried on a token or approval call is a spend. Closes 1 disclosed issue, highest severity High.

  • High Reported privately: once a call's calldata matched a classified layout (an ERC-20 transfer, an approval), the native value the call carried was dropped before the policy ran, so in local mode a transfer() carrying 1 ETH...
npmGitHub release

A refused spend is voided, never counted; may-be-live is a marker, not wording. Closes 1 disclosed issue, highest severity Low.

  • Low Reported privately: in local mode, every refused sign_transaction consumed the rolling budget for good.
npmGitHub release

One budget across processes; sign_transaction is a spend. Closes 2 disclosed issues, highest severity High.

  • High Reported privately: in hosted mode the spend policy was enforced only on /wallets/{id}/send; sign_transaction posts to /wallets/{id}/sign and returned a signed, broadcast-ready transaction with no policy check, no...
  • Medium Reported privately: the 1.14.0 ledger was read once at startup and never re-read, with no lock across the check-and-append step, so two live agentwallet-mcp processes sharing one ledger file (two MCP...
npmGitHub release

Approvals and contract-call value are spends under the policy. Closes 1 disclosed issue, highest severity High.

  • High Reported privately: the 1.14.0 spend policy decoded only transfer calldata, so an ERC-20 approve (including approve_token with "max" and approve_permit2 with no amount) fell through as a plain contract call...
npmGitHub release

Spend Policy.

npmGitHub release

Round 8 freeform findings. Closes 4 disclosed issues, highest severity Medium.

  • Medium Internal adversarial audit, round 8 (1.13.15): the "one live authorization per resource" guard was keyed on the chain, so a paywall rotating the chain per answer harvested one cap-sized nonce per registry chain for a...
  • Low Internal adversarial audit, round 8 (1.13.15): an MCP cancellation (notifications/cancelled) of an in-flight pay_x402 was ignored; the handler went on to sign and deliver the payment and the client never saw a result
  • Low Internal adversarial audit, round 8 (1.13.15): the hosted broadcast-transfer branch of pay_x402 posted /wallets/{id}/send without the skip header, so a metered 402 from the API host was auto-paid inside the call and the...
  • Low Internal adversarial audit, round 8 (1.13.15): a v2 requirement with megabytes of junk in outputSchema or extensions was echoed whole into PAYMENT-SIGNATURE (5 MB header per paid retry, kept in the cache for the...
npm

A plain-http Solana RPC URL is refused except on localhost, like an EVM one.

npm

settled-claim units read one way; get_token_info surfaces a chain mismatch; package.json repository format.

npm

Round 6, prompt-injection arrival across every tool. Closes 1 disclosed issue, highest severity Medium.

  • Medium Internal adversarial audit, round 6 (1.13.13), prompt-injection arrival across all 34 tools: a hostile API host's 402 on the auto-pay path produced a 4 MB error built from raw accepts entries (tool errors had no size...
npm

Round 5, network edge and regression sweep. Closes 1 disclosed issue, highest severity High.

  • High Internal adversarial audit, round 5 (1.13.12), network edge: the RPC-secret redaction ran a quadratic regex over the node's whole error text, so a 160 KB error page froze the single-threaded server for 14 s and a 5 MB...
npm

Round 4, local EVM path (fee ceiling, honoured gas parameters, local hash). Closes 1 disclosed issue, highest severity High.

  • High Internal adversarial audit, round 4 (1.13.11), local EVM path: nothing bounded the fee of a locally signed transaction; a node answering a 47,000 gwei priority fee or a 30M gas estimate took the whole native balance as...
npm

Round 4 (Solana decimals flip, startup parsing, strict arguments, docs). Closes 3 disclosed issues, highest severity High.

  • High Internal adversarial audit, round 4 (1.13.10), local Solana path: the SPL token cap read the mint's decimals through a cached call and the instruction through an uncached one, so an RPC that answered 6 to one read and...
  • Medium Internal adversarial audit, round 4 (1.13.10): a leading space in AGENTWALLET_API_URL defeated the https-only check (the regex saw the space, fetch did not) and Basic credentials went out in plaintext; unknown tool...
  • Low Internal adversarial audit, round 4 (1.13.10), startup and docs: AGENTWALLET_MAX_AUTOPAY_PER_HOUR was unvalidated (blank meant 0, garbage meant 20); a misspelled AGENTWALLET_* name ran uncapped without a warning...
npm

Round 3, Permit2 upto and EIP-712 signing. Closes 1 disclosed issue, highest severity Low.

  • Low Internal adversarial audit, round 3 (1.13.9), Permit2 upto and EIP-712 signing: for a token outside the domain registry the "exact" signer read name()/version() through the 64-character display sanitiser instead of the...
npm

Adversarial audit round 3 (auto-pay scope, signing mutex, approvals binding, host data bounds). Closes 3 disclosed issues, highest severity High.

  • High Internal adversarial audit, round 3, server side (hosted API 1.7.2, deployed 2026-10-04): the server's per-transaction token cap knew only transfer, approve and transferFrom, so increaseAllowance, Permit2.approve...
  • High Internal adversarial audit, round 3 (1.13.8), hosted trust boundary: with AGENTWALLET_WALLET_ID set, a 402 from the API host on ANY call (list_wallets, get_chains, get_token_info's three internal reads) was paid...
  • Medium Internal adversarial audit, round 3 (1.13.8): when the first of N parallel pay_x402 calls for one purchase failed, every waiter proceeded at once and signed its own nonce (7 nonces from 8 calls); a paywall that varied...
npm

delete_wallet names the wallet it deletes. Closes 1 disclosed issue, highest severity Medium.

  • Medium Internal adversarial audit, round 2, server side (hosted API 1.7.1): one DELETE with a leaked API key destroyed a wallet key; the approval email's amount and token name were the agent's own text; the emailed approve...
npm

Adversarial audit round 2 (NFT selectors, payment_made, legacy receipt origin, ATA pre-funding). Closes 3 disclosed issues, highest severity Medium.

  • Medium Internal adversarial audit, round 2 (1.13.6): an ERC-721 or ERC-1155 collection declines decimals() and so counted as "not a token" to the cap, which let setApprovalForAll(attacker, true) and NFT transfers through...
  • Low Internal adversarial audit, round 2 (1.13.6): payment_made trusted a server-sent settlement header even on a 402 or 500, and the server's claimed transaction hash was shown as tx_hash; a legacy-shaped 402 from any host...
  • Informational Internal adversarial audit, round 2 (1.13.6): USDT, DAI and USDbC in the registry do not implement EIP-3009 (checked on chain), so an "exact" payment in them signed a dead authorization; Polygon USDT now reports as...
npm

Adversarial audit fixes (local auto-pay, decimals probe, SPL decimals, windows). Closes 8 disclosed issues, highest severity Medium.

  • Medium Internal adversarial audit (1.13.5): in local mode with hosted credentials also configured, a 402 from the API host on any call that falls through to it (usage, chains, paywall reads) ran the internal auto-pay, which...
  • Medium Internal adversarial audit (1.13.5): the local token cap's decimals() probe trusted viem's revert classification, which maps JSON-RPC error -32603 and an empty envelope to "the contract reverted", so a transient node...
  • Medium Internal adversarial audit (1.13.5): transfer_token on a Solana mint outside the registry scaled the amount by the caller's decimals and then wrote the mint's real decimals into the instruction, so the on-chain check...
  • Medium Internal adversarial audit (1.13.5): a server could shrink the signed authorization window to seconds, vary an amount's leading zeros, or answer parallel calls, and each retry signed a fresh nonce it could also settle
  • Low Internal adversarial audit (1.13.5): every EVM RPC failure returned viem's message, which carries the RPC URL with its API key, to the agent (the 1.13.0 redaction covered wallet_mode only); an out-of-range private key...
  • Low Internal adversarial audit (1.13.5): the Solana recipient guard accepted any account not owned by a token program, including program-data, buffer and lookup-table accounts that nothing can sign for; a plain account...
  • Low Internal adversarial audit (1.13.5): Permit2 was recognised at one address, so a chain with a different deployment (zkSync Era) got no Permit2 guard; a whitespace-only cap value meant "no cap"...
  • Informational Internal adversarial audit (1.13.5): several refusal messages told the agent to raise the operator's caps itself; the pay_x402 description still said upto is refused and that max_payment can raise the cap; untrusted...
npm

Final URL recorded out of band, authorization key includes the query. Closes 2 disclosed issues, highest severity Medium.

  • Medium Reported privately: pay_x402 learned which origin finally answered from the x-agw-final-url response header, and safeFetch copied every server header through before appending its own, so a server reached through a...
  • Low Reported privately: the authorization-reuse key was built from origin and path without the query string, so two resources at the same path with different queries shared one signature and the second was reported paid...
npm

SOL cap checks token-account rent at the account's real size. Closes 1 disclosed issue, highest severity Informational.

  • Informational Reported privately: when an SPL send has to create the recipient's token account, the rent checked against AGENTWALLET_MAX_TX_SOL was computed for the classic 165-byte account, while a Token-2022 account is 170 to 195...
npm

Solana recipient guard refuses mints, local mode refuses approvals. Closes 2 disclosed issues, highest severity Low.

  • Low Reported privately: the Solana recipient guard refused programs and token accounts but used a length gate, so an 82-byte token mint passed as a wallet and an SPL send to it landed in a token account owned by the mint...
  • Low Reported privately: in local mode with hosted credentials also configured, pay_x402 accepted an approval_id from the hosted account, but the local signer never reports back, so the approval was never marked used and...
npm

Allowance totals, exact-only internal auto-pay, pinned decimals. Closes 3 disclosed issues, highest severity Medium.

  • Medium Reported privately: in local mode increaseAllowance was checked on the increment alone, so repeated compliant calls could leave a spender's standing allowance above AGENTWALLET_MAX_TX_TOKEN
  • Low Reported privately: the internal auto-pay path (a 402 from the configured AgentWallet API host, not pay_x402) took the first offer without checking its scheme, so an upto maximum from that host would have been paid...
  • Informational Reported privately: for a token outside the registry, a compromised RPC answering a false decimals() scales both the signed amount and the token cap by the same factor.
npm

Security audit release. Closes 3 disclosed issues, highest severity High.

  • High Internal audit (1.13.0): the x402 cap was "1 unit of whatever asset the endpoint named", so a hostile 402 asking for native ETH was measured against a 1 ETH cap and the asset label shown to the agent (and in the...
  • Medium Internal audit (1.13.0): authorization validity followed the endpoint's maxTimeoutSeconds with no ceiling and every retry signed a fresh nonce (a withholding server could harvest one cap-sized authorization per retry)...
  • Low Internal audit (1.13.0): SPL sends could burn tokens into a token account or program address and paid recipient-account rent the SOL cap never saw; one Solana or EVM RPC URL served every chain id unchecked; the SPL...
npm

Token cap prices WETH deposit()/withdraw(uint256) on the chain's wrapped-native contract so wrap_eth and unwrap_eth work under AGENTWALLET_MAX_TX_TOKEN. Closes 1 disclosed issue, highest severity Low.

  • Low With AGENTWALLET_MAX_TX_TOKEN set in local mode, wrap_eth and unwrap_eth were refused by the token cap (WETH deposit() / withdraw(uint256) are unpriced calldata to a token contract) and the only way to restore them was...
npm

Token cap refuses unpriced calldata when decimals() answers outside 0..36 or the RPC is unreachable. Closes 1 disclosed issue, highest severity Medium.

  • Medium Token cap let unpriced calldata through when the target's decimals() answered outside 0..36: the probe reported "absurd answer" and "no answer" with the same null, and only "no answer" was meant to pass
npm

Report EIP-7702 delegated payers before an x402 authorization, fresh test keys.

npm

Token cap prices increaseAllowance and Permit2 approve, refuses unpriced token calldata; SSRF guard canonicalizes IPv4-compatible IPv6.

npm

x402 Payer Report (42 endpoints settled on Base), payment_made requires a receipt or 2xx.

npm

pay_x402 treats a used approval as not approved; record the approval-flow settlement.

npm

Approvals above the cap, Permit2 upto, token risk, proof and security docs.

npm

x402 exact via EIP-3009, upto refused, v2 headers and extensions. Closes 2 disclosed issues, highest severity High (functional).

  • High (functional) exact scheme sent a broadcast transfer instead of an EIP-3009 authorization; standard servers rejected every payment
  • Medium upto scheme settled as a full upfront transfer (overcharge relative to usage)
npm

Fix native SOL x402 cap using 18 decimals instead of 9.

npm

docs-only, guards documented by custody mode.

npm

Drop caller credentials on cross-origin redirects in safeFetch.

npm

Pin SSRF-validated addresses to the connection, and land 1.10.2/1.10.3.

npm

Fix SSRF filter bypass in pay_x402 URL validation.

npm

Solana local signing, and move price comparisons off the README.

npm

Local (non-custodial) signing mode + key export path.

npm

Closes 1 disclosed issue, highest severity High.

  • High pay_x402 cap could be bypassed when max_payment was omitted (attacker-controlled maxAmountRequired reached the transfer)
npm

Release data generated 2026-10-25 from the npm registry, the GitHub release list and each package's SECURITY.md.