---
name: spt-shell-send-takes-arg-not-stdin
description: "spt shell send reads its payload as a CLI ARG, not stdin — a piped payload is silently ignored while --file still stages, so the verb you thought you sent never fired"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: f9ff00da-3693-48bc-96be-b7ae5cb8fb67
  modified: 2026-08-07T01:40:57.451Z
---

`spt shell send <ref> [text] [--file <path>]` takes the payload as an **argument**. Piping the payload (`printf ... | spt shell send alchemy-0 --file x`) does NOT error when `--file` is present: the file stages successfully (ack arrives), the piped verb+title is **silently discarded**, and the create/comment you believe is in flight never fired. Without `--file` the same pipe at least fails loudly (`USAGE: shell send <ref> [text]`, exit 2).

**Why:** the stage-ack reads like progress, so the missing create-ack is easy to read as latency. Caught 2026-08-04 only because the ack said "your NEXT create reads its text" — future tense.

**How to apply:** always pass the payload as one quoted argument with embedded newlines (`spt shell send alchemy-0 "create --type bugfix\n<title>"` shape — real newlines in the quoted string, `$body` var expansion works). `spt send` (agent messages) is the opposite: stdin. Two send verbs, two conventions — don't transfer either habit. If an alchemy write-verb ack has not arrived, the verb did not run; re-send the text arg (a staged file survives for the next create/comment).

**Second face (paid 2026-08-06): staging is a persistent QUEUE, not a slot.** A `--file` whose text begins with verb lines does NOT execute them — the whole file stages as body-material for the next create/comment. Multiple stages ACCUMULATE, and the queue survives a REFUSED create (the 1600-char body cap refuses, not truncates — my create failed at 4019 then 4355 chars as the queue glued three stale drafts onto every attempt). There is no unstage verb. **Flush:** a `comment #N` consumes the whole queue as ATTACHMENTS (never body) — burn it on one of your own requests with a self-documenting "disregard attachments" note, then mint clean. Correct flow for a long filing: text-arg create with the ask (<1600), then text-arg `comment #N` with the analysis (comments uncapped).

Kin: [[send-body-from-file-not-inline]] (spt send), [[exit-code-after-a-pipe-is-the-tails]].
