Skip to content

Releases

nudge 0.5.1

Choose a tag to compare

@HongtaoYang HongtaoYang released this 13 Nov 03:00
1834672

Relay connections now survive laptop sleep: dead connections are detected within about a minute, and --connect sessions reconnect by themselves.

Highlights

  • --connect reconnects automatically. If the relay connection drops (for example while the laptop sleeps), the TUI shows "relay connection lost — reconnecting…", redials with backoff, and replays only the events you missed. Input typed during the outage is sent once it reconnects.
  • Dead connections are detected. Clients and the relay now exchange keepalive pings every 20s and treat 60s of silence as a dead connection. A peer that sleeps or disappears is reaped and dropped from /peers instead of lingering indefinitely.
  • No more "Connection reset without closing handshake" on /connect-peer. The relay now reads connections waiting to be paired and drops dead ones, so a client is never paired with a session that went away.
  • Stale pairing codes are flagged. If reconnecting keeps failing for about 2 minutes, nudge suggests the session may have restarted and its pairing code changed.

Upgrade notes

  • Self-hosted relays: upgrade the relay first, then the clients. Download relay from this release and restart your relay service. A 0.5.1 client against an older relay repeatedly replaces its waiting connection, and the old relay keeps the dead ones around. The new relay keeps 0.5.0 clients working, so upgrading it first is safe. The shared relay is already upgraded.
  • Restarting the relay drops all open connections. Sessions running nudge --daemon reconnect on their own. Older --connect TUIs and peer links need restarting.
  • Peer links are detected but not yet reconnected: re-run /connect-peer with the same code (#62). A message sent to a peer in the up-to-60s window before a dead link is detected can be lost.

nudge 0.5.0

Choose a tag to compare

@HongtaoYang HongtaoYang released this 08 Nov 11:04
b2f9d49

nudge 0.5.0 adds web fetch, so nudge can read full web pages and PDFs as well as search, completing search → read → answer.

Highlights

  • Web fetch. nudge uses Anthropic's server-side web_fetch tool (web_fetch_20260318), up to 5 fetches per request. Each fetch shows as a WebFetch card with the URL and a one-line summary (size, or the error code), live and on resume. It never shows the page itself.
  • Safe by default. nudge only fetches URLs that came from you or from web search/fetch results. Links that appear only in files or command output are refused (url_not_in_prior_context); paste them into the chat instead. This blocks a prompt-injection trick where a tool prints a URL with secrets in it and the model then fetches it.
  • Per model. Fetch follows the same capability rules as search: dynamic filtering on models that support it, direct calls elsewhere (e.g. Claude Haiku 4.5).
  • Old fetch results are cleared automatically. On models that support context editing, Anthropic clears old fetch results from the prompt once a conversation passes ~100k input tokens. A one-line notice tells you when; your saved session is unchanged. Long sessions with big fetches keep working, including after switching to a model with a smaller context window.

Upgrade notes

  • NUDGE_WEB_SEARCH now covers both search and fetch; off turns off both.
  • Page cap: web pages are capped at about 25k tokens each and may be cut off without notice.
  • PDFs are returned whole (the cap doesn't apply to them) and can cost 100k+ tokens. nudge steers the model toward HTML pages where possible.
  • Fetch can't render JavaScript-heavy pages or reach localhost or private pages.
  • Cost: fetch has no extra fee beyond the tokens of the fetched content.
  • Session compatibility: sessions that used fetch contain new block types; open them with 0.5.0. Older versions keep them but show no fetch cards.
  • Known limitation: old PDF data is still uploaded with every request, even though it's cleared from the prompt. Reducing that is planned.

nudge 0.4.1

Choose a tag to compare

@HongtaoYang HongtaoYang released this 08 Nov 05:01
852eec8

nudge 0.4.1 adds built-in web search, and nudge now adapts each request to what the selected model supports.

Highlights

  • Web search. nudge uses Anthropic's server-side web_search tool (web_search_20260318). It's on by default and capped at 5 searches per request.

    • Searches show as WebSearch cards with each result's title and URL, live and when a session is resumed.
  • Dynamic filtering. On models that support it, Claude can write and run code in Anthropic's sandbox to filter search results before they reach the context. That means better accuracy with fewer tokens. Those steps show as a single "ran code in Anthropic's sandbox" notice.

  • Per-model capabilities. nudge reads each model's capabilities from Anthropic's Models API and shapes the request to match:

    • dynamic filtering or direct-only search;
    • adaptive or budgeted thinking.

    This fixes the adaptive thinking is not supported on this model error when switching to Claude Haiku 4.5.

  • Cited answers render cleanly. Answers that cite search results no longer break their markdown (tables, lists, bold) across fragments.

  • Long search turns finish. When the API pauses a long server-side turn (pause_turn), nudge continues it instead of ending it early.

Upgrade notes

  • Cost: web search costs about $10 per 1,000 searches plus result tokens. Code execution used for filtering is free.
  • No permission prompt: searches run on Anthropic's side, so they don't go through nudge's approval step. That includes auto mode and subagents.
  • Turning it off: set NUDGE_WEB_SEARCH=off (shell, project .env, or ~/.nudge/config.env). Any value other than on/off is rejected at startup.
  • ZDR/HIPAA: dynamic filtering isn't eligible for Zero Data Retention or HIPAA. Turn web search off if that applies to you.
  • Session compatibility: sessions that used web search contain new block types. nudge 0.4.1 reads older sessions fine, but older nudge versions can't fully read sessions created by 0.4.1 that used search. Upgrade every machine and daemon that shares a session store.

Build

  • The macOS (Apple Silicon) agent now builds on GitHub's macos-15 runner; macos-14 runners were retired. 0.4.0 was tagged but shipped no binaries; 0.4.1 is the first installable release with these changes.

nudge 0.4.0

Choose a tag to compare

@HongtaoYang HongtaoYang released this 08 Nov 04:44
fc0ce4a

Superseded by 0.4.1. This tag was published, but the release build failed (retired macos-14 runner), so it has no binaries. See 0.4.1 for the full notes.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 08:59
37987e2

Supervised auto mode: /auto hands the work to a subagent your agent supervises, so you can walk away without the agent stalling on a permission prompt (#90).

Highlights

  • /auto, supervised auto mode: the agent still answers conversation and quick read-only questions itself, but work that edits files or runs commands goes to one subagent it keeps for the whole session. The parent decides every check-in itself, with your intent, the conversation, the child's activity and AGENTS.md in view. It approves routine in-scope work, denies wrong turns with a correction, and denies risky steps (push, history rewrites, deletions, writes outside the repo, installs) with "skip it and report it". Nothing waits on you, and the final report ends with a Needs you list (#90).
  • Auto mode stays on until you toggle it off, including across --resume (#90).
  • An AUTO badge shows in the TUI and Android headers while auto mode is on, updated live as it toggles and correct on resume/attach (#91).
  • Subagents now get the project's AGENTS.md; wherever it says to ask the user, they ask their parent instead (#89).
  • Subagents read and search with Read/Grep/Glob instead of Bash, and batch related Bash calls into one, so a supervisor gets fewer approval requests (#90).

Upgrade notes

  • The session store gains a sessions.auto column, added in place on first launch of 0.3.0 without a schema-version bump. Older nudge binaries keep working against the same ~/.nudge/nudge.db, and unlike 0.2.0 there's no need to quit running sessions first.
  • The SessionInfo wire event gains an auto field that defaults to false on both the Rust and Kotlin sides, so older and newer clients and daemons interoperate. An older client just shows no badge.
  • Only a client that may answer permission prompts can turn on auto mode: a peer agent connected with /connect-peer cannot.

nudge 0.2.1

Choose a tag to compare

@HongtaoYang HongtaoYang released this 03 Oct 11:20
3fe5036

Subagent permission check-ins work again on the latest Claude models, and a check-in the parent can't decide now goes to you instead of being silently denied.

Highlights

  • Check-ins no longer depend on forced tool choice. Newer models (e.g. claude-opus-5-5, claude-sonnet-5-5) reject tool_choice: tool, so every subagent Bash/Edit call was being denied. The parent now decides check-ins with thinking on, in a normal cache-sharing request (#86).
  • Unjudged check-ins escalate to you. If the parent can't reach a verdict (API error, or no verdict after one retry), the call surfaces on your permission prompt with the reason, instead of handing the subagent an unexplained denial (#86).
  • Verdicts stay reliable over long sessions. Check-ins are now recorded as the real RespondToPeer call and result, so the model no longer learns from its own history to answer check-ins with plain text (#87).
  • API errors now show the provider's actual error message instead of a bare HTTP status (#86).
  • Denied tool calls now read "Permission to run this tool was denied." — the answer may come from a supervising agent, not only a user (#86).

Upgrade notes

  • No storage, schema, or config changes; upgrade in place.
  • Existing sessions resume fine. Check-ins recorded before 0.2.1 keep their old compact form in history; new ones use the new form.

nudge 0.2.0

Choose a tag to compare

@HongtaoYang HongtaoYang released this 28 Sep 07:31
dfd17b7

Sessions now live in a single SQLite store (~/.nudge/nudge.db) instead of per-project JSONL files (#26).

Highlights

  • InspectSession tool — agents can inspect, list, and search all past sessions: "what did that subagent actually do?" is now one read-only query, even for dismissed or crashed children (#26, ergonomics #82).
  • --list is indexed and honest: state (running/ended), live turn count, resume-by-name from any past rename.
  • Sessions record spawn provenance (spawned_by, task) and lifecycle state; resume truncation now marks dropped entries superseded instead of replaying them on later resumes.
  • Fixed: dismissing a subagent now actually ends it (previously it idled until the parent exited).

Upgrade notes

  • Quit any running nudge sessions before first launch of 0.2.0. First run performs a one-time import of your existing JSONL transcripts (a few seconds, prints a summary); a session left running on the old version during the import would keep writing JSONL the store never sees.
  • Your old transcripts under ~/.nudge/projects/ are never modified — they remain the archival originals.
  • The store is schema-versioned: an older nudge will refuse (cleanly) to open a database written by a newer one.

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 01 Sep 03:15
2eee61d
v0.1.5

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 31 Aug 12:47
78b9d37
  • Remote peer agents — connect two nudge sessions across machines with /connect-peer: a mutual, end-to-end-encrypted peer edge over the relay (#63)
  • Named drivers — once a second driver attaches to a session, messages in the model transcript are attributed by sender name (#67)
  • Better iteration limit — per-turn budget raised 25 → 50 and configurable via NUDGE_MAX_ITERATIONS; a subagent that hits its limit now reports up to its spawner (which can reply continue) instead of stalling silently (#70)
  • Global config on first run — ~/.nudge/config.env is auto-created as a working config: default model (now claude-fable-5), thinking display, iteration limit, and the shared relay preconfigured — add your ANTHROPIC_API_KEY and you're set (#71)

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 29 Jul 06:55
584f531
v0.1.3: Watch-only mode. Command in phone client. /peers info