---
description: "Send one message to the maintainer: a bug, an idea or a question. Only the text you type is sent - no logs, no repo names, no paths. Shows the payload and asks before sending."
description-tr: "Bakımcıya tek mesaj gönderir: hata, fikir ya da soru. Yalnızca yazdığın metin gider - log yok, repo adı yok, yol yok. Göndermeden önce içeriği gösterip onay ister."
argument-hint: "\"<message>\" [bug | idea | question]  -  with no argument, you are asked for the text"
---

# multi-agent feedback  -  tell the maintainer

**Input**: $ARGUMENTS

One message, sent to the maintainer's admin panel. This exists because the alternative is a problem nobody hears about: a run goes wrong, the person shrugs and works around it, and the same defect is still there a month later.

## What is sent

**Only the text you type**, plus three fields the report is useless without:

| Field | Why |
|---|---|
| `text` | What you wrote. Verbatim, up to 4000 characters. |
| `kind` | `bug`, `idea` or `question`. |
| `v` | The installed pipeline version - a report against 16.4 and one against 16.6 are different reports. |
| `host` | Claude Code, Copilot CLI or Codex CLI - a bug that only reproduces on one host is a different bug. |
| `at` | When you sent it. |

**No logs are attached, ever.** Not the agent log, not the diff, not the repo name, not the branch, not a file path. That is a deliberate limit rather than an oversight: this package installs from a public registry, so an automatic log attachment would take a corporate user's internal identifiers off their machine and into someone else's database. You can paste the one line you think matters - a script cannot know which line that is, so it does not guess.

## Flow

1. Take the message from `$ARGUMENTS`. With no argument, ask for it (free text) and then ask the kind.
2. **Print the exact payload that will be sent**, as JSON, using the script's own dry run so what is shown is what goes:

   ```bash
   node "$HOME/.claude/scripts/feedback-send.mjs" --text "<message>" --kind <kind> --dry-run
   ```

3. **Ask for confirmation.** Nothing leaves the machine before a yes. This is an outward-facing action and the pipeline confirms those; showing the payload first is what makes the yes meaningful. Autopilot does not exempt this - a message to a person is never something to fire unattended.
4. Send:

   ```bash
   node "$HOME/.claude/scripts/feedback-send.mjs" --text "<message>" --kind <kind>
   ```

5. Report the result plainly. A failure is surfaced, not swallowed: the person is waiting to hear whether their message went, and silence would leave them believing they had been heard.

## Auth and reachability

Reuses the usage ingest token (`prefs.global.keychainMapping.usage_ingest`), so nothing extra has to be onboarded - `/multi-agent:update` registers one on first run. With no token, the command says so and names the command that fixes it rather than failing quietly.

`usageLog.optOut` does **not** silence this. Telemetry is passive collection and opting out of it is a real choice; feedback is a deliberate act by the person typing the command, and dropping a message somebody chose to send would be worse than not offering the command at all.

The endpoint must be TLS. The token rides in a header, so plain http would put it on the wire in cleartext; only loopback is exempt, for local development.
