Skip to content

feat(plugin): add the tether skill — email handoff for long-running sessions#354

Merged
jiashuoz merged 1 commit into
mainfrom
feat/tether-skill
Jul 1, 2026
Merged

feat(plugin): add the tether skill — email handoff for long-running sessions#354
jiashuoz merged 1 commit into
mainfrom
feat/tether-skill

Conversation

@jiashuoz

@jiashuoz jiashuoz commented Jul 1, 2026

Copy link
Copy Markdown
Member

What

Adds a Beta tether skill to the e2a plugin. During a long-running coding session, the agent emails threaded status updates to the user as it sees fit and polls for emailed replies — so a user who's AFK can steer the agent from their inbox. Reply stop to end.

Architecture

Coding agents are turn-based; nothing native listens to an inbox mid-session. So the two directions use different mechanisms:

  • Send = agent-driven — the agent calls tether.sh update "…" at meaningful moments (model's judgment sets cadence → no per-turn spam).
  • Receive = poll-driventether.sh poll on an interval; keep the session alive with /loop so replies sent while idle are still picked up (no hook fires while idle).
  • Blocked-alert = optional Notification hook — emails when the agent is stuck on a permission prompt.

Credentials

Reuses the CLI's agent creds from e2a login (~/.e2a/config.json) — no separate .env needed. Falls back to ~/.e2a-tether.env / env vars. Uses the static, agent-scoped CLI api_key (the right credential for shell/hook context; the MCP OAuth token is client-managed and not reusable here).

Files

file role
skills/tether/tether.sh runtime CLI: start / update / poll / status / stop
skills/tether/lib.sh config + e2a send/reply/poll helpers
skills/tether/hooks/tether-notify.sh optional Notification hook
skills/tether/install.sh wire/unwire the hook; _selftest
skills/tether/tether.env.example credentials template

Housekeeping

  • Bumps plugin to 0.4.2 across all client + marketplace manifests (validator enforces parity).
  • Lists agentify + tether in the README tree.

Testing

  • node scripts/validate-plugin.mjs3 skills, version 0.4.2, manifests in sync.
  • install.sh _selftest green (hooks no-op unconfigured; syntax OK).
  • Offline end-to-end via stubbed curl: start → update → poll → stop with no duplicate reply reporting.

🤖 Generated with Claude Code

…nning sessions

Adds a Beta `tether` skill to the e2a plugin: a long-running coding session
emails threaded status updates to the user as it sees fit and polls for emailed
replies, so the user can steer an AFK agent from their inbox. Sending is
agent-driven (via e2a); receiving is poll-driven (keep the session alive with
/loop). An optional Notification hook alerts on permission-blocked stalls.

Reuses the CLI's agent creds from `e2a login` (~/.e2a/config.json) so setup
collapses to a single login. Bumps the plugin to 0.4.2 across all client +
marketplace manifests and lists the skill in the README.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jiashuoz jiashuoz merged commit 075b2cf into main Jul 1, 2026
14 checks passed
@jiashuoz jiashuoz deleted the feat/tether-skill branch July 1, 2026 06:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant