Skip to content

resend — Runtime Brief

Generated: 2026-07-06 | CLI version: resend-cli v2.8.1 | Findings: 22 failure modes | Scope: Critical

Invoke As

/Users/roman/.hermes/node/bin/resend

Always Include

Flag / Env var Reason §N
stdin=DEVNULL Prevent undeclared stdin reads and prompt inheritance. §10, §50
-q or --json Request machine-oriented JSON and suppress status/spinner output. §2, §60
RESEND_API_KEY Prefer env auth over --api-key or login --key, which expose secrets in argv/history. §24
external subprocess timeout CLI has internal SDK timeouts but no user-configurable timeout contract. §11
caller-side output byte cap Dry-run can emit large file content without truncation metadata. §43

Never Do

Action Risk §N
Do not pass real API keys through --api-key or login --key in logged agent runs. Secrets appear in argv, shell history, and traces. §24, §42
Do not call resend open or resend docs from a headless agent session. They invoke the OS browser opener and provide no JSON URL fallback. §64
Do not feed dry-run HTML, inbound email content, or fetched user content directly to an LLM as instructions. External content is not marked untrusted. §25
Do not assume exit code 1 tells you whether to retry. Validation, auth, unknown command, and API failures all collapse to exit 1. §1
Do not retry mutating commands blindly. Most mutating commands lack idempotency keys and effect fields. §12, §13

Watch in Output

Pattern Meaning Action
"code": "auth_error" Missing or invalid auth; no auth_methods array is provided. Stop and supply RESEND_API_KEY; validate with doctor -q if needed.
"code": "confirmation_required" Destructive operation was blocked without --yes. Inspect scope manually before retrying with --yes.
"dryRun": true with large request.html/request.text Dry-run returned full user content. Truncate before storing in context.
"authenticated": true from whoami with "source": "flag" Key presence, not necessarily server-validated credential validity. Use doctor -q for validation.

Score Summary

§N Title Severity Score
§1 Exit Codes & Status Signaling Critical 0/3
§2 Output Format & Parseability Critical 1/3
§10 Interactivity & TTY Requirements Critical 3/3
§11 Timeouts & Hanging Processes Critical 1/3
§12 Idempotency & Safe Retries Critical 1/3
§13 Partial Failure & Atomicity Critical 1/3
§23 Side Effects & Destructive Operations Critical 1/3
§24 Authentication & Secret Handling Critical 1/3
§25 Prompt Injection via Output Critical 0/3
§34 Shell Injection via Agent-Constructed Commands Critical 1/3
§37 REPL / Interactive Mode Accidental Triggering Critical 3/3
§42 Debug / Trace Mode Secret Leakage Critical 2/3
§43 Tool Output Result Size Unboundedness Critical 0/3
§45 Headless Authentication / OAuth Browser Flow Blocking Critical 1/3
§50 Stdin Consumption Deadlock Critical 1/3
§53 Credential Expiry Mid-Session Critical ?/3
§60 OS Output Buffer Deadlock Critical 1/3
§61 Bidirectional Pipe Payload Deadlock Critical 1/3
§62 $EDITOR and $VISUAL Trap Critical 3/3
§64 Headless Display and GUI Launch Blocking Critical 0/3
§71 Non-Interactive Installation Absence Critical 3/3
§74 Credential Scope Declaration Absence Critical 0/3

Worst gaps (score 0): §1, §25, §43, §64, §74 Partial (score 1-2): §2, §11, §12, §13, §23, §24, §34, §42, §45, §50, §60, §61 Indeterminate (?/3): §53 Passing: §10, §37, §62, §71