Summary
All mainnet memory writes through the MCP server currently fail at the Walrus upload step with an Enoki sponsorship error. Reads (memwal_recall) and auth work fine. Reproduced consistently on both production relayers.
Error (verbatim)
Tool error: remember job failed: walrus upload failed: Internal Error: walrus upload failed:
Enoki API error (400): {"errors":[{"code":"dry_run_failed","message":"Dry run failed, could
not automatically determine a budget: MoveAbort(MoveLocation { module: ModuleId { address:
0000000000000000000000000000000000000000000000000000000000000002, name: Identifier(\"balance\") },
function: 9, instruction: 8, function_name: Some(\"destroy_zero\") }, 0) in command 9"}]}
Repro
@mysten-incubation/memwal-mcp v0.0.5, fresh login via memwal_login (delegate key registered on-chain, credentials saved).
- Call
memwal_remember with any short text and namespace, e.g. {"text": "[FACT] smoketest :: ...", "namespace": "gardener-smoketest"}.
- Fails identically every time. Tried 2026-07-02 between ~11:25 and ~11:40 UTC:
https://relayer.memory.walrus.xyz: fails
https://relayer.memwal.ai: fails with the same error
memwal_recall on the same account/namespace works (returns "No matching memories found." cleanly), so relayer auth and the read path are healthy.
Account (mainnet): 0x057359bbb9bc3b6eed2b1c04d51bcbee421b9c802e90543b0ca65844c006d7cb. The object is active with 3 registered delegate keys, verified via sui_getObject.
Analysis
The abort is in the Sui framework's balance::destroy_zero (abort code 0 = ENonZero) at command 9 of the sponsored PTB that Enoki dry-runs. That means the transaction being constructed destroys a coin/balance that still has a non-zero value, i.e. the WAL payment split inside the sponsored upload flow leaves a non-zero remainder where the code expects exact change. Nothing client-side affects this (payload size, namespace, relayer choice, fresh login), which points at the sponsor-side coin selection / storage-cost calculation, possibly triggered by a recent storage price or epoch change.
Impact
Every MCP user is currently unable to write memories to mainnet (Session 5 proof runs included). Reads unaffected.
Environment
@mysten-incubation/memwal-mcp 0.0.5 (stdio), --prod
- Node.js 24.14.0, Windows 11
Summary
All mainnet memory writes through the MCP server currently fail at the Walrus upload step with an Enoki sponsorship error. Reads (
memwal_recall) and auth work fine. Reproduced consistently on both production relayers.Error (verbatim)
Repro
@mysten-incubation/memwal-mcpv0.0.5, fresh login viamemwal_login(delegate key registered on-chain, credentials saved).memwal_rememberwith any short text and namespace, e.g.{"text": "[FACT] smoketest :: ...", "namespace": "gardener-smoketest"}.https://relayer.memory.walrus.xyz: failshttps://relayer.memwal.ai: fails with the same errormemwal_recallon the same account/namespace works (returns "No matching memories found." cleanly), so relayer auth and the read path are healthy.Account (mainnet):
0x057359bbb9bc3b6eed2b1c04d51bcbee421b9c802e90543b0ca65844c006d7cb. The object is active with 3 registered delegate keys, verified viasui_getObject.Analysis
The abort is in the Sui framework's
balance::destroy_zero(abort code 0 =ENonZero) at command 9 of the sponsored PTB that Enoki dry-runs. That means the transaction being constructed destroys a coin/balance that still has a non-zero value, i.e. the WAL payment split inside the sponsored upload flow leaves a non-zero remainder where the code expects exact change. Nothing client-side affects this (payload size, namespace, relayer choice, fresh login), which points at the sponsor-side coin selection / storage-cost calculation, possibly triggered by a recent storage price or epoch change.Impact
Every MCP user is currently unable to write memories to mainnet (Session 5 proof runs included). Reads unaffected.
Environment
@mysten-incubation/memwal-mcp0.0.5 (stdio),--prod