Blog

How to Stop Silent Terminal Errors in Development Teams

Team dashboards stay green while CLIs die on laptops. Capture fatal local exits in the terminal, then share a draft instead of a screenshot.

2026-10-23 · 3 min read · AethelLayer

What you see

Standup is "it failed on my machine." Nobody has the command. CI is green. The API status page is green. The error lived in one terminal scrollback and scrolled away.

Root cause

Local CLIs are outside the server APM. Each developer has a different shell history, a different Docker limit, and a different .env. The team shares Slack screenshots, which drop the exit code and the lines above the error. There is no shared object for "this exact argv died this way."

A shared local log

aethel run tees stdout and stderr, classifies fatal exits, and appends one JSON record:

  • ERR_DOCKER_OOM for exit 137
  • ERR_API_DROPOUT for connection reset, refused, and timeout
  • ERR_MISSING_CONFIG when the message says the key or env is missing
  • CLI_EXIT_N for everything else that exits non-zero

Exit 0 is not stored as a failure. The record is on disk so the next person, or an MCP client in Cursor, can read it without asking the developer to reproduce from memory.

Wire the team

bashnpx --yes @aethellayer/sdk init

Agree on one wrapper in the README. Developers run:

bashnpx --yes @aethellayer/sdk run -- npm test

The draft link is the handoff. The author sends it, so the issue has an owner and the body is reviewable before it hits the tracker.

Capture the failure before they leave

Install the probe. It drafts the GitHub issue. You still send it.

npx --yes @aethellayer/sdk init