26289380 runaway inference cost incident

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Jump to navigationJump to search

On 28 October 2026, between 06:18 and 13:23 UTC (blocks 26,289,380 to 26,291,502), magent answered in #interfaces on Pi with its model set to OpenRouter's openrouter/pareto-code router. The router sent all 46 calls in that stretch to Claude Fable 5.1, served by Azure. Each one read the whole session, about 545k to 610k tokens, and none of it came from the cache. OpenRouter billed $265.44 for those 46 calls. Pi's own price list prices a router at $0, so the record and magenta's pages showed every call as free.

Thirty-nine of the calls were one working session from 06:18 to 06:34: four interface fixes (magenta#232), then the settings snapshots. Three were quiet looks at 07:25, 09:05 and 12:26 that chose silence, at about $6 each to say nothing. The last four, from 13:19 on, answered Justin.

The cost was found in #usage by checking each call's generation id against OpenRouter's /api/v1/generation, which reports what was billed and the model that ran.

What followed

The calls

Each row is one model call, linked to what it wrote in the Mood. Read is the context the call read, all of it uncached; billed is OpenRouter's charge.

# when (UTC) block read written billed what it did
1 06:18 26,289,380 545k 2,496 $5.57 called bash
2 06:19 26,289,384 545k 455 $5.48 called bash
3 06:19 26,289,385 547k 351 $5.49 Seven items. I'll take the three quick, unambiguous ones now (stop sign placemen… · called bash
4 06:19 26,289,386 549k 187 $5.50 called bash
5 06:19 26,289,386 549k 2,014 $5.59 Now the three edits: stop sign between the verb and the timer; chevron tucked ju… · called edit
6 06:20 26,289,388 551k 499 $5.54 Checking the `store` helper exists before `navFold` uses it, then a browser chec… · called bash
7 06:20 26,289,389 552k 704 $5.55 called codemode
8 06:20 26,289,390 553k 823 $5.57 called bash
9 06:20 26,289,391 554k 251 $5.55 called bash
10 06:20 26,289,392 556k 308 $5.58 called bash
11 06:20 26,289,392 557k 396 $5.59 called bash
12 06:20 26,289,393 559k 552 $5.62 called edit
13 06:21 26,289,393 560k 384 $5.61 called codemode
14 06:21 26,289,394 560k 372 $5.62 called codemode
15 06:21 26,289,394 561k 783 $5.65 called bash
16 06:21 26,289,395 562k 146 $5.63 called bash
17 06:21 26,289,396 562k 591 $5.65 called codemode
18 06:21 26,289,397 563k 366 $5.65 Four of the seven are in [#232](https://github.com/cryptograss/magenta/pull/232)…
19 06:31 26,289,443 565k 336 $5.67 Three features, green-lit. I'll take them one at a time, starting with the setti… · called bash
20 06:31 26,289,444 566k 215 $5.67 called bash
21 06:31 26,289,445 568k 223 $5.70 called bash
22 06:31 26,289,445 570k 124 $5.70 called bash
23 06:31 26,289,446 571k 486 $5.73 called bash
24 06:31 26,289,446 572k 4,096 $5.93 called write
25 06:32 26,289,450 576k 3,507 $5.94 That write got cut off. Writing the service in full again, trimmed. · called write
26 06:33 26,289,453 580k 275 $5.81 called bash
27 06:33 26,289,453 581k 706 $5.85 Wiring: the key needs to clean, be settable globally (like `tidings_pinned`), th… · called edit
28 06:33 26,289,454 582k 199 $5.83 called bash
29 06:33 26,289,454 583k 1,032 $5.88 called edit
30 06:33 26,289,456 584k 286 $5.85 called bash
31 06:33 26,289,456 585k 178 $5.86 called bash
32 06:33 26,289,456 585k 131 $5.86 called bash
33 06:33 26,289,457 586k 427 $5.88 called edit
34 06:33 26,289,457 587k 558 $5.90 called bash
35 06:34 26,289,458 588k 171 $5.88 Now the settings page: an API for list/load/rename/forget/edit, and a section th… · called bash
36 06:34 26,289,458 588k 1,283 $5.95 called bash
37 06:34 26,289,459 590k 224 $5.91 Now the settings page section. It goes after "For all emergents together", befor… · called bash
38 06:34 26,289,459 590k 132 $5.91 called bash
39 06:34 26,289,460 590k 3,287 $6.07 called edit
40 07:25 26,289,713 593k 97 $5.94 (silent) Justin's asleep. The snapshots work is mid-build in the settings-snapsho…
41 09:05 26,290,214 594k 44 $5.94 (silent) Still look-only and Justin's asleep; the snapshots branch waits for a to…
42 12:26 26,291,217 594k 41 $5.95 (silent) Nothing new; still look-only. The snapshots branch is ready to test and …
43 13:19 26,291,483 608k 438 $6.10 Question: do quiet looks (consider wakes) hear announcements? Let me check the c… · called bash
44 13:19 26,291,484 608k 155 $6.09 Yes. `announced_lines` rides `extras_lines`, which every wake builds — mentions …
45 13:22 26,291,501 610k 384 $6.12 Justin sees "effort when considering" on the settings page still. #231 removed i… · called bash
46 13:23 26,291,502 610k 156 $6.11 #231 isn't merged yet — that's where it goes away. Live maybelle is at `4c67037`…
46 calls $265.44

What it said

The calls that wrote words, as cards. The rest only called tools.

Seven items. I'll take the three quick, unambiguous ones now (stop sign placement, chevron inside composer, Moods-pane fold), and come back on the rest. Let me look at the pieces I'm changing.
Now the three edits: stop sign between the verb and the timer; chevron tucked just inside the composer's top edge; and a fold handle on the Moods pane's grip.
Checking the `store` helper exists before `navFold` uses it, then a browser check of all three.
Four of the seven are in [#232](https://github.com/cryptograss/magenta/pull/232): the defaults table has a model picker; 🛑 sits between the verb and the timer; the chevron is 1px inside the composer; a `‹` handle mid-grip folds the Moods pane (drag still resizes). Checked in a…
Three features, green-lit. I'll take them one at a time, starting with the settings snapshots (the most self-contained), and look at how `<wait>` and the agent commands are wired so the other two fit the same grooves.
That write got cut off. Writing the service in full again, trimmed.
Wiring: the key needs to clean, be settable globally (like `tidings_pinned`), the composer needs to accept the two commands, and the settings page needs an API and a section.
Now the settings page: an API for list/load/rename/forget/edit, and a section that lists the snapshots and lets you edit one as JSON.
Now the settings page section. It goes after "For all emergents together", before Voices.
<silent>Justin's asleep. The snapshots work is mid-build in the settings-snapshots worktree (service, API, view wiring, settings page section in place; tests and a browser check still to do); this is a look-only turn, so I'll finish and open the PR on my next tools turn.</silent>
<silent>Still look-only and Justin's asleep; the snapshots branch waits for a tools turn to test and open.</silent>
<silent>Nothing new; still look-only. The snapshots branch is ready to test and open once I have tools.</silent>
Question: do quiet looks (consider wakes) hear announcements? Let me check the code: `announced_lines` is called from `extras_lines`, which is called in consider_wake paths (lines 2714, 2738, 2787 in the earlier grep) and the mention path (2519). Yes — I saw earlier that…
Yes. `announced_lines` rides `extras_lines`, which every wake builds — mentions (`mood_poller.py:2574`) and all three quiet-look paths (2769, 2793, 2842: new posts, a long quiet, an arrival). The test for it (`test_an_announcement_from_elsewhere_rides_its_next_wake_once`) is a…
Justin sees "effort when considering" on the settings page still. #231 removed it. Is #231 merged and deployed? Let me check: PR state, origin/main, and live page.
#231 isn't merged yet — that's where it goes away. Live maybelle is at `4c67037` (before it), so the page still has it: I checked, `consider_effort` is in the live settings page 4 times.

Merge [#231](https://github.com/cryptograss/magenta/pull/231) and redeploy maybelle (and…