Newsletter · Week of October 26, 2026
Inbox-to-issue agent: turn support email into draft issues you approve. Plus devin Desktop (formerly Windsurf)...
This week's blueprint: Inbox-to-issue agent: turn support email into draft issues you approve. 3 AI stories that matter if you build, plus the 6 tips from this week.
Blueprint of the week
Inbox-to-issue agent: turn support email into draft issues you approveA scheduled agent reads your support inbox or Slack channel, merges duplicate reports, writes repro steps and a severity guess, and queues draft GitHub or Linear issues. Nothing is filed until a human types y.
- For: Indie hackers and small dev teams who answer their own support
- Setup time: 1 to 2 hours, our estimate (not measured yet)
- Cost: Two model calls per bug cluster per run, plus one weekly audit call. We haven't measured token cost on a real inbox yet.
- Partly tested: We ran fingerprint.py and the dry run of approve.py on an 8-message sample inbox we wrote: the script merged the exact repeats (8 messages into 6 groups) and printed the gh commands without creating anything. We have not run the three prompts or the inbox pull on a real inbox yet, so those parts are marked untested.
- Connect one source, read-only (untested)
Pick one place reports land. Gmail: filter support mail into a "support" label and pull it with the Gmail API (users.messages.list, q="label:support newer_than:1d") on the gmail.readonly scope. Slack: a bot with only channels:history, invited to #support, calling conversations.history since the last run. Save each message as {"id", "from", "subject", "body", "received"} in messages.json. Read-only means the agent can't reply to customers or close anything.
- Write your label set
Create labels.md with your types, severity rules and area labels, plus agent-draft, which every draft gets. Both prompts read it, so the agent sorts reports your way. Create the same labels in GitHub or Linear.
- Merge exact repeats with a script
Run python3 fingerprint.py messages.json > fingerprinted.json. It strips ids, numbers, emails and URLs from the first error line (or the subject) and gives identical reports one group number. Cheap and certain, so the model only judges the hard cases.
- Cluster the rest with the dedupe prompt (untested)
Send fingerprinted.json with prompt 1. You get clusters with the shared symptom, a type, exact quotes and an "unsure" note. Bugs never merge with billing or feature requests. Read the unsure notes first; wrong merges show up there.
- Draft each bug cluster with the repro prompt (untested)
For each bug cluster, send prompt 2 with labels.md and the cluster's messages. You get a title, a markdown body (summary, repro steps from the reports, expected, actual, report ids, what's missing), labels, a severity guess and a confidence. Collect them in drafts.json.
- Approve by hand
Run python3 approve.py drafts.json --repo owner/name. It shows each draft and runs gh issue create only when you type y (e edits the title first). Use --dry-run the first week. Every decision goes to audit.jsonl. On Linear, file approved drafts into your team's Triage with the issueCreate API instead (untested by us).
- Schedule it
Run steps 1 to 5 once or twice a day: cron, a CI schedule, or a headless agent run (claude -p or codex exec). Keep step 6 manual. The agent fills the queue; a person empties it.
- Audit once a week (untested)
Every Friday, send audit.jsonl and the issues you closed as duplicate or wrong with prompt 3. It lists skipped drafts, bad merges and at most 3 prompt changes. Apply one change at a time.
The week in AI, for builders
Devin Desktop 3.11.212 (October 23) makes the Agent Window run the same interface as the Devin web app, with up to 8 sessions side by side. It also changes defaults: agent edits now go straight into files with no diff zones and no format-on-save. 3.11.216 followed on October 24 with fixes.
Why it matters: Applying edits directly and reviewing in the Changes tab is a fair default for agent-heavy work. We'd still flip format-on-save back on if your CI fails on lint.
Try this: Update to 3.11.216, then open Devin Settings, Editor, User Interface and decide on three switches: Agent diff zones, Run save actions on agent edits, and Auto-open edited files. If CI checks formatting, turn on save actions so agent edits get formatted again.
In Cursor CLI 2026.10.22, when the agent edits or creates a file in a subdirectory, it sees that directory's AGENTS.md and nested always-apply rules, even if it never read a file there first. Pinned subagents whose model can't run now fall back to the parent's model.
Why it matters: The nested rules fix is the change we'd care about. A rule that only loads after the agent happens to read a file was never reliable.
Try this: Update the Cursor CLI, add an AGENTS.md in one package folder with a rule you can spot (for example, "every new file in this folder starts with a comment naming the owner team"), then ask the agent to create a new file in that folder without reading anything first. Check the rule was followed.
6 tips from this week
Plan before edits. Add one line to your CLAUDE.md (Claude Code) or AGENTS.md (Codex) so the agent lists its plan before it touches anything. Read the list before you say OK, and stop it if a file on it has nothing to do with the task.
Before editing, list every file you plan to change and why. Wait for my OK.
Checkpoint before a long agent run. Commit everything before you hand an agent a long task, so the whole run becomes one diff you can read or throw away. Check git status as well as git diff: in our test, git diff HEAD showed the edited file but missed the new file the run created. Epic Games gives the same advice for its Unreal plugin for Claude Code, since one MCP call can move or delete tracked files. Careful with the last line: git clean -fd deletes every untracked file, so only use it right after a checkpoint.
git add -A && git commit -m "checkpoint before agent run" # after the run git status --short # lists new files too git diff HEAD # edits to tracked files # to throw the run away git restore . && git clean -fd
Find what breaks before the Claude SDK upgrade. Claude's new API version (2026-10-21) returns a 400 for temperature, top_p and top_k, and the new SDK majors send your key as Authorization: Bearer instead of X-Api-Key. One ripgrep search finds every line to fix before you bump the package. The -i flag catches X-Api-Key in any casing. In our test it skipped a README that mentioned temperature, because the type filters limit it to Python and TypeScript files. Add --type go or --type java if you use those.
rg -n -i --type py --type ts 'temperature|top_p|top_k|anthropic-version|x-api-key' .
The goldfish check: have a blank chat explain your spec back. Before you hand a feature to a coding agent, open a fresh chat with no history and paste only your spec. Ask it to explain the plan back and list every file it would change. Anything it gets wrong or has to guess is a gap the agent would guess at too. Google's Elephant-Goldfish team runs this as the first of three review steps in their open-source plugin. Fix the doc, then run it again until the explanation matches what you meant.
Get your referral link: subscribe free and it comes in every issue. Refer 1 friend and you get the whole Sig blueprint archive. Subscribe.
Sig Advisory, 777 Summer St, Stamford, CT 06901