threads send and replies send publish to Ed under your own name. Both are mutations: they print a plan, ask y/N on an interactive terminal, and require --yes everywhere else. See Mutations for the general rules this section assumes.
Post a new thread
--title is required. The body comes from exactly one of --body, --body-file, or — on an interactive terminal, when neither flag is given — your $EDITOR. Passing both --body and --body-file is a usage error, and an empty body after trimming is also a usage error.
Reply to a thread or a comment
--body/--body-file and $EDITOR work the same way as threads send. --as picks answer or comment; left unset, it defaults to answer on question threads and comment on every other thread type. --to <commentId> replies under one existing comment instead of the thread itself — the CLI checks that the comment actually belongs to the thread you named before posting, and refuses with a usage error if it doesn’t, since Ed itself would otherwise accept a reply to a comment ID from a different thread while you thought you were replying to this one.
Review before sending
--dry-run, also prints the exact content that would be sent to stderr, so a conversion mismatch doesn’t surprise you. --dry-run never calls Ed.
Markdown to Ed’s document format
The body you write is Markdown; Ed stores posts in its own document format, and the CLI converts one to the other before sending. It supports:- paragraphs (blank-line-separated blocks)
- headings (
#through######) - fenced code blocks
- inline code spans
- bold and italic
- links, including a link that itself contains bold or italic text
- bullet lists (
-) and numbered lists (1.)
threads read, replies shown inline, lessons read, slides read — converts Ed’s document format back to Markdown; see Threads.
Writes are never retried
A failed read is retried automatically with backoff; see Ed Discussion CLI for scripts and agents. A failed write is not, because retrying a post or a reply risks creating it twice. If a mutation fails partway, check Ed before running the command again.Command reference: threads
Full syntax for
threads send.