ur-agent 1.79.1 → 1.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/A2A.md CHANGED
@@ -12,10 +12,11 @@ surfaces:
12
12
  | UR compatibility API | `/a2a/tasks` and `/a2a/tasks/:id` | UR-specific REST-style background-task controls; not an A2A REST binding |
13
13
 
14
14
  The two protocol versions deliberately use separate schemas and handlers. The
15
- stable SDK remains pinned for v0.3; UR's dependency-free v1 compatibility layer
16
- translates strict v1 messages and tasks onto the same bounded durable execution
17
- engine. It is covered by UR tests and the official A2A TCK, but does not claim
18
- certification by the prerelease JavaScript SDK.
15
+ stable SDK remains pinned for the older binding; UR's dependency-free final
16
+ protocol compatibility layer translates strict messages and tasks onto the
17
+ same bounded durable execution engine. It is covered by UR tests and the
18
+ official A2A TCK. UR does not claim a gRPC interface or certification by the
19
+ alpha JavaScript SDK binding.
19
20
 
20
21
  ## Start the server
21
22
 
@@ -9,6 +9,18 @@ reproducible autonomous software engineering agent: every substantial task can
9
9
  be driven as `spec -> plan -> patch -> test -> report -> rollback`, with the
10
10
  spec as the durable source of truth and command evidence as the success gate.
11
11
 
12
+ ## v1.80.0 Additions
13
+
14
+ | Addition | Surface | What it adds |
15
+ | --- | --- | --- |
16
+ | Credential-safe sandbox | `sandbox.credentials`, `sandbox.network.strictAllowlist`, `sandbox.network.tlsTerminate` | Masked file/environment credentials, JWT claims, AWS/SigV4 handling, strict unattended egress, trusted-source-only policy, and trailing-slash deny regression coverage. |
17
+ | Permission parser hardening | `Tool(parameter:value)`, Bash/PowerShell checks | Parameter-aware wildcard rules, zsh conditional command detection, visible hidden characters, and quoted PowerShell path validation. |
18
+ | Accessible terminal | `--screen-reader`, `/config screenReader=true` | Append-only plain output, edit announcements, and reduced animation. |
19
+ | Current agent protocols | `ur mcp serve-web`, roots notifications, `input_required` | Final tool-input continuation results, compatibility roots, added-directory notifications, Tasks, and Apps under one professionally named web surface. |
20
+ | Bounded observable delegation | `--forward-subagent-text`, session budgets, OpenTelemetry | Nested-agent text correlation, WebSearch session limits, advisory spawn warnings, assistant response events, and workflow/run correlation. |
21
+ | Session and input ergonomics | `/session`, `ur session`, `/config key=value`, `DirectoryAdded`, `vimEscape` | Explicit archive/restore, direct settings, directory automation, and Vim insert escape sequences. |
22
+ | Command cleanup | `/fix-bug`, command registry integrity | Replaces the versioned debug-skill name, removes no-op command registrations and duplicate 3D aliases, and rejects version jargon in public command descriptions. |
23
+
12
24
  ## v1.79.1 Addition
13
25
 
14
26
  | Addition | Surface | What it adds |
@@ -97,7 +109,7 @@ trust boundaries.
97
109
  - ACP stdio now implements durable list/load/delete/resume/close, bounded exact
98
110
  history replay, modes, configuration options, and available commands in
99
111
  addition to streaming prompts, permission requests, MCP servers, and roots.
100
- - `ur mcp serve-http` exposes the opt-in stateless MCP 2026 compatibility
112
+ - `ur mcp serve-web` exposes the opt-in stateless Model Context Protocol
101
113
  surface with Tasks and a self-contained Apps resource. It is loopback-only
102
114
  without authentication and enforces request metadata, capability negotiation,
103
115
  owner isolation, limits, private persistence, and corrupt-state quarantine.
@@ -243,7 +255,7 @@ automatically changes the active provider.
243
255
  | Deterministic slash registry | `src/commands.ts`, `test/commandRegistryIntegrity.test.ts` | Resolves bundled, plugin, project, workflow, and built-in commands by explicit source priority; rejects duplicate canonical tokens, removes only conflicting aliases, validates every lazy loader, and keeps the technical command catalog complete. |
244
256
  | Unified sandbox command | `/sandbox [status\|check\|init\|eval\|exclude]` | One interactive slash command now owns both the settings UI and text subcommands; the shell-facing `ur sandbox` implementation is shared rather than separately registered. |
245
257
  | Actionable CI cwd handling | `ur ci-loop --cwd <path>` | Reports the absolute execution directory, retains assertion and stack context, and stops "No tests found" after one attempt without wasting a fix-agent run. |
246
- | Explicit worktree completion | `/debug-v2`, `/refactor`, `/paper-implementation`, `/benchmark`, `/security-review`, `/dockerize`, `/latex-paper`, `/batch` | Keeps changes local, asks before the final full suite, and never commits, pushes, or opens a PR unless separately requested. |
258
+ | Explicit worktree completion | `/fix-bug`, `/refactor`, `/paper-implementation`, `/benchmark`, `/security-review`, `/dockerize`, `/latex-paper`, `/batch` | Keeps changes local, asks before the final full suite, and never commits, pushes, or opens a PR unless separately requested. |
247
259
 
248
260
  ## v1.25.x Additions
249
261
 
@@ -305,8 +317,8 @@ components instead of one giant prompt.
305
317
  | Addition | Surface | What it adds |
306
318
  | --- | --- | --- |
307
319
  | Agent skill runner | `src/services/agents/agentSkillRunner.ts` | Reusable isolated-worktree wrapper that polls to completion; PR creation is available only with explicit `createPr: true`. |
308
- | Worktree slash skills | `/debug-v2`, `/refactor`, `/paper-implementation`, `/benchmark`, `/security-review`, `/dockerize`, `/latex-paper`, `/batch` | Bundled slash skills keep changes local, run focused checks, ask before the final full suite, and never publish automatically. |
309
- | Agent templates | `ur agent-templates install` | Adds `debug-v2`, `refactor`, `paper-implementation`, `benchmark`, `security-review`, `dockerize`, and `latex-paper` reusable agent templates under `.ur/agents/`. |
320
+ | Worktree slash skills | `/fix-bug`, `/refactor`, `/paper-implementation`, `/benchmark`, `/security-review`, `/dockerize`, `/latex-paper`, `/batch` | Bundled slash skills keep changes local, run focused checks, ask before the final full suite, and never publish automatically. |
321
+ | Agent templates | `ur agent-templates install` | Adds `bug-fixer`, `refactor`, `paper-implementation`, `benchmark`, `security-review`, `dockerize`, and `latex-paper` reusable agent templates under `.ur/agents/`. |
310
322
  | Worktree command | `ur worktree list\|status\|clean` | Inspect and clean up UR agent worktrees created by `ur bg` or slash skills. |
311
323
 
312
324
  ## v1.20.0 Additions
@@ -331,7 +343,7 @@ while keeping them project-local and manifest-backed:
331
343
  | --- | --- | --- |
332
344
  | Agent | `ur`, `ur agents`, `ur crew`, `ur bg`, `ur agent-templates` | `.ur/agents/`, `AGENTS.md`, `UR.md` |
333
345
  | Rules | `ur context-pack scan`, `ur safety`, `/guardrails`, `/hooks` | `AGENTS.md`, `UR.md`, `.cursor/rules/*.mdc`, `.cursorrules`, `.ur/safety-policy.json`, `.ur/guardrails.json`, `.ur/hooks.json` |
334
- | MCP | `ur mcp`, stdio mode, opt-in MCP 2026 HTTP Tasks/Apps, tools/resources | `.mcp.json`, `.ur/mcp/`, plugin manifests |
346
+ | Model Context Protocol | `ur mcp`, standard-input mode, opt-in web Tasks/Apps, tools/resources | `.mcp.json`, `.ur/mcp/`, plugin manifests |
335
347
  | Skills | `/skills`, `/create-skill`, `ur skill verify\|sign\|keygen`, bundled/plugin skills | `.ur/skills/`, `.agents/skills/`, user skills, plugin skill folders, trusted key store |
336
348
  | CLI | `ur --help`, `ur -p`, `ur exec`, `ur acp`, workflow subcommands | `package.json` scripts, `.ur/project-manifest.json`, `.ur/verify.json` |
337
349
  | Models | `/model`, `ur model-doctor`, model router, Ollama discovery | Ollama endpoint, settings, `OLLAMA_MODEL`, model metadata cache |
@@ -2,7 +2,7 @@
2
2
 
3
3
  UR is a provider-flexible, local-first terminal coding agent. This page tracks
4
4
  how UR maps to current agent-platform trends and where future work should go
5
- next. The factual comparison below is a **2026-08-10 research snapshot**; run
5
+ next. The factual comparison below is a **2026-08-11 research snapshot**; run
6
6
  `ur agent-trends` for the versioned machine-readable report and re-check the
7
7
  linked primary sources before acting on prerelease standards.
8
8
 
@@ -80,8 +80,8 @@ Inside an interactive session:
80
80
  | Trend | UR status | Current coverage | Professional next step |
81
81
  | --- | --- | --- | --- |
82
82
  | Provider-flexible, local-first runtime | Covered | Local Ollama; direct OpenAI, Anthropic, Gemini, OpenRouter, and OpenAI-compatible APIs; authenticated subscription-CLI adapters; explicit provider selection | Normalize capability discovery across providers and make automatic per-step routing opt-in |
83
- | MCP tool ecosystem | Covered | `ur mcp`, MCP OAuth/XAA/elicitation, fail-closed bounded stdio tools, and the opt-in stateless MCP 2026 HTTP adapter | Track the final 2026 spec/SDK and add independent-client fixtures before promoting the adapter |
84
- | MCP Tasks and MCP Apps | Covered | Negotiated Tasks lifecycle, owner-isolated durable state, and a self-contained Apps resource through `ur mcp serve-http` | Reconcile final extension schemas and broaden client interoperability tests |
83
+ | Model Context Protocol ecosystem | Covered | `ur mcp`, OAuth/XAA, fail-closed bounded tools, final `input_required` continuation, all workspace roots with change notifications, and the opt-in stateless web server | Broaden independent-client interoperability fixtures |
84
+ | Protocol Tasks and Apps | Covered | Negotiated Tasks lifecycle, owner-isolated durable state, and a self-contained Apps resource through `ur mcp serve-web` | Broaden independent-client interoperability fixtures |
85
85
  | A2A / Agent Card interoperability | Covered | Stable-SDK v0.3 plus strict v1 ProtoJSON JSON-RPC/HTTP+JSON, negotiated cards, tenant isolation, durable artifacts, and TCK coverage | Adopt the stable v1 SDK when released; add signed-card verification and streaming only with truthful end-to-end tests |
86
86
  | AG-UI agent-to-frontend interoperability | Covered | Official-schema HTTP/SSE adapter, truthful capabilities, ordered state/text/tool events, cancellation, exact CORS, bounded requests/output, and loopback-or-bearer security | Add independent frontend fixtures before advertising optional interrupts, binary/WebSocket transport, or client tools |
87
87
  | Durable workflows and checkpoints | Covered | resume, rewind, steerable `ur bg`/managed-cloud runs, optional worktrees/PRs, cron/workflow internals, file restore, and resumable multi-repo DAG state | Add authenticated cross-machine checkpoint replication |
@@ -104,10 +104,10 @@ Inside an interactive session:
104
104
  | AGENTS.md interoperability | Covered | `AGENTS.md` loaded as runtime project context (before `UR.md`), plus imported by the `/init` command | Keep aligned as the AGENTS.md spec evolves |
105
105
  | Browser and computer-use workflows | Covered | `/browser`, `/chrome`, Playwright-aware tasks, plus bounded Electron desktop fixtures with assertions, teardown, masked screenshots, and optional raw video/trace only when selector redaction is disabled | Add OS-native non-Electron fixtures behind equally testable drivers |
106
106
  | Provenance and citations | Partial | WebFetch source URLs, `/cite`, `/graph`, `/trace`, evidence ledgers, and task-memory citations with digest freshness | Add authenticated reopening for user citations and explicit network refresh for web/MCP citations |
107
- | Evals and observability | Covered | isolated eval worktrees, redacted structured trajectories, policy/outcome/cost/duration CI gates, reliability reports, dashboards, benchmark adapters, and OpenTelemetry | Publish opt-in signed versioned pass-rate snapshots by category |
108
- | Standard GenAI telemetry | Covered | Explicit OTLP/console exporters; GenAI inference, agent/workflow, tool, memory, token, cache, response, latency, streaming time-to-first-chunk/inter-output-chunk, and error semantics; content off by default | Add trajectory policy graders and cross-provider dashboards without increasing content capture/cardinality |
107
+ | Evals and observability | Covered | isolated eval worktrees, redacted structured trajectories, policy/outcome/cost/duration CI gates, dashboards, nested-agent stream forwarding, and correlated OpenTelemetry assistant/workflow/tool events | Publish opt-in signed versioned pass-rate snapshots by category |
108
+ | Standard GenAI telemetry | Covered | Explicit OTLP/console exporters; privacy-safe assistant response, message/request/tool correlation, workflow run identity, inference, token, cache, response, latency, streaming, and error semantics; content off by default | Add trajectory policy graders and cross-provider dashboards without increasing content capture/cardinality |
109
109
  | Test-first execution | Covered | `ur test-first` detects compile/test/lint commands, stores failure traces, retries through a fix agent, and installs detected commands into `.ur/verify.json` for edit-time gates | Add per-package command plans for large monorepos |
110
- | Security and prompt-injection resistance | Covered | allow/ask/deny permissions, shell safety analysis, secret scan, untrusted web-content guidance, OS-level execution sandbox (macOS Seatbelt, Linux bubblewrap) | Continuously test web/MCP/repository/skill/memory injection, confused-deputy, and tool-abuse cases |
110
+ | Security and prompt-injection resistance | Covered | parameter-aware allow/ask/deny permissions, hardened Bash/PowerShell approval parsing, credential masking, TLS proxying, strict egress, secret scan, untrusted-content framing, and OS sandboxing | Continuously test web/protocol/repository/skill/memory injection, confused-deputy, and tool-abuse cases |
111
111
  | Agent identity and delegated authorization | Covered | MCP OAuth/XAA helpers, issuer-minted A2A bearer/delegation tokens, subject/audience/expiry/skill binding, local trust boundaries, permission rules | Keep delegated scopes narrow and auditable; HMAC child-token narrowing remains issuer-side |
112
112
  | Multimodal workflows | Partial | `/image`, `/video`, `/youtube`, `/voice`, browser workflows | Add model-aware multimodal capability reporting for local Ollama setups |
113
113
  | Spec-driven development | Covered | `ur spec` scaffolds requirements/design/tasks under `.ur/specs/`, tracks phase/approvals, and runs the Spec Kit / Kiro task list one task at a time | Add bidirectional sync with an external `specs/` directory |
@@ -157,10 +157,11 @@ The server refuses unauthenticated off-loopback binds and requires
157
157
  `--public-base-url` for wildcard binds so discovery never advertises
158
158
  `0.0.0.0`. Prefer `UR_A2A_TOKEN` and `UR_A2A_DELEGATION_SECRET` over argv
159
159
  secrets. Request size, prompt size, output size, submission rate, concurrent
160
- submissions, and active tasks are bounded by `UR_A2A_*` settings. UR's v1
161
- compatibility layer is covered by the official TCK while the JavaScript SDK's
162
- v1 line remains prerelease; the stable v0.3 path therefore stays available
163
- during the negotiated migration.
160
+ submissions, and active tasks are bounded by `UR_A2A_*` settings. UR's
161
+ final-protocol compatibility layer is covered by the official TCK. The
162
+ official JavaScript SDK's matching binding remains alpha, so UR keeps the
163
+ stable older SDK binding as a separately negotiated compatibility path rather
164
+ than relabeling or silently translating it.
164
165
 
165
166
  ## Model Runtime Position
166
167
 
@@ -171,26 +172,31 @@ and model selection are explicit, credentials are resolved through the
171
172
  credential layer, and the optional fallback setting is diagnostic advice rather
172
173
  than an automatic provider switch.
173
174
 
174
- ## v1.48 Frontier Priorities
175
-
176
- The `1.48.0` work closes the managed-worker, steering, learned-playbook,
177
- cited-memory, Agentic CI, trajectory-grading, desktop-QA, durable-side-chat,
178
- multi-repository, and model-judge gaps from the 2026-07-26 scan. The remaining
179
- ordered backlog keeps prerelease protocols opt-in and focuses on evidence and
180
- trust:
181
-
182
- 1. Adopt final MCP 2026 and stable A2A v1 SDK artifacts when published, while
183
- preserving dual-stack negotiation and independent-client fixtures.
184
- 2. Add A2A signed-card verification, streaming/resubscription, and push only
185
- with authenticated end-to-end conformance tests.
186
- 3. Extend task-memory citations, deletion proofs, quarantine, and rollback to
175
+ ## 1.80 Frontier Priorities
176
+
177
+ The final Model Context Protocol release is implemented, including Tasks,
178
+ Apps, multi-round-trip tool input, roots compatibility, and strict request
179
+ metadata. Agent-to-Agent 1.0 JSON-RPC and HTTP+JSON remain separately
180
+ negotiated from the older stable JavaScript SDK binding. The current backlog
181
+ focuses on proven interoperability and narrow trust boundaries:
182
+
183
+ 1. Broaden independent-client fixtures for final Model Context Protocol and
184
+ Agent-to-Agent requests before adding more advertised protocol surface.
185
+ 2. Adopt a stable official Agent-to-Agent JavaScript binding when one exists.
186
+ Add gRPC only for a real transport consumer with TLS/authentication and TCK
187
+ coverage; do not advertise it from the Agent Card before that proof exists.
188
+ 3. Keep AP2 payments outside the coding agent until UR has an explicitly
189
+ authorized commerce use case, mandate/signature policy, credential model,
190
+ and end-to-end payment conformance suite.
191
+ 4. Extend task-memory citations, deletion proofs, quarantine, and rollback to
187
192
  every semantic, embedding-backed, and legacy memory store.
188
- 4. Publish opt-in, signed, versioned trajectory/outcome pass-rate snapshots and
193
+ 5. Publish opt-in, signed, versioned trajectory/outcome pass-rate snapshots and
189
194
  calibrate model-judge agreement without capturing prompt/tool content.
190
- 5. Require registry attestations, dependency review, revocation, and update
195
+ 6. Require registry attestations, dependency review, revocation, and update
191
196
  transparency before one-command community skill/plugin installation.
192
- 6. Reopen authenticated user citations, explicitly refresh web/MCP citations,
193
- enforce final claim-to-source links, and complete Windows OS-sandbox parity.
197
+ 7. Reopen authenticated user citations, explicitly refresh web/protocol
198
+ citations, enforce final claim-to-source links, and complete Windows
199
+ OS-sandbox parity.
194
200
 
195
201
  ## Source And Trust Policy
196
202
 
@@ -222,7 +228,7 @@ Professional answer requirements:
222
228
  - OpenAI deferred tool search: https://developers.openai.com/api/docs/guides/tools-tool-search
223
229
  - OpenAI agent evals: https://developers.openai.com/api/docs/guides/agent-evals
224
230
  - Model Context Protocol: https://modelcontextprotocol.io/docs/getting-started/intro
225
- - MCP 2026-07-28 release candidate: https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/
231
+ - Final Model Context Protocol 2026-07-28 release: https://blog.modelcontextprotocol.io/posts/2026-07-28/
226
232
  - MCP Tasks extension: https://tasks.extensions.modelcontextprotocol.io/
227
233
  - MCP Apps extension: https://apps.extensions.modelcontextprotocol.io/
228
234
  - ACP v1 schema: https://agentclientprotocol.com/protocol/v1/schema
@@ -2,6 +2,21 @@
2
2
 
3
3
  UR reads configuration from CLI flags, environment variables, and project or user settings files.
4
4
 
5
+ Inside an interactive UR session, `/config` opens the settings panel and
6
+ `/config key=value` applies common settings directly:
7
+
8
+ ```text
9
+ /config thinking=false screenReader=true reducedMotion=true
10
+ /config editor=vim vimEscape=jj
11
+ /config verbose=true autoCompact=false
12
+ /config --help
13
+ ```
14
+
15
+ Start UR with `--screen-reader`, set `UR_SCREEN_READER=1`, or use
16
+ `/config screenReader=true` for append-only plain-text output, announced text
17
+ edits, and reduced animation. `vimEscape` accepts 2–8 printable non-whitespace
18
+ characters or `off`.
19
+
5
20
  ## Model Providers
6
21
 
7
22
  UR-Nexus supports official provider access paths only:
@@ -427,6 +442,32 @@ This sandbox covers UR-run Bash/File tool commands only. For subscription CLI
427
442
  providers, it does not extend to actions the external CLI performs internally
428
443
  — see [Provider Guide](providers.md).
429
444
 
445
+ Security-sensitive sandbox proxy and credential settings are accepted only
446
+ from user, flag, or managed-policy settings. Project settings cannot opt into
447
+ credential injection. Example user settings:
448
+
449
+ ```json
450
+ {
451
+ "sandbox": {
452
+ "enabled": true,
453
+ "network": {
454
+ "allowedDomains": ["api.example.com"],
455
+ "strictAllowlist": true,
456
+ "tlsTerminate": {}
457
+ },
458
+ "credentials": {
459
+ "envVars": [
460
+ { "name": "API_TOKEN", "mode": "mask", "injectHosts": ["api.example.com"] }
461
+ ]
462
+ }
463
+ }
464
+ }
465
+ ```
466
+
467
+ Credential entries support `deny` or `mask`, regex extraction, JWT claim
468
+ masking, host-scoped injection, AWS key pairs, and SigV4 rewriting. Unknown
469
+ destinations are rejected without prompting when `strictAllowlist` is true.
470
+
430
471
  ## Project Context Pack
431
472
 
432
473
  `ur context-pack` writes durable architecture context and task memory:
@@ -480,7 +521,7 @@ ur mcp get <name>
480
521
  ur mcp add-json <name> '<json>'
481
522
  ur mcp remove <name>
482
523
  ur mcp serve
483
- UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http --port 8976
524
+ UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-web --port 8976
484
525
  ```
485
526
 
486
527
  MCP servers may execute code or access external services. Only enable servers you trust, and keep credentials out of committed config.
@@ -492,7 +533,7 @@ adjusted with `UR_MCP_MAX_CALLS_PER_MINUTE`,
492
533
  `UR_MCP_MAX_CONCURRENT_CALLS`, `UR_MCP_TOOL_TIMEOUT_MS`,
493
534
  `UR_MCP_MAX_INPUT_CHARS`, and `UR_MCP_MAX_OUTPUT_CHARS`.
494
535
 
495
- `serve-http` is a separate, opt-in MCP 2026-07-28 compatibility surface at
536
+ `serve-web` is the separate, opt-in stateless Model Context Protocol web surface at
496
537
  `POST /mcp`. It is stateless at the transport layer and exposes capability-
497
538
  negotiated Tasks and a self-contained overview App backed by UR's real MCP
498
539
  tool registry. Every call must supply matching protocol/method/name metadata.
@@ -1,180 +1,64 @@
1
- # UR Gap Analysis — 2026-08-11 Research Snapshot
1
+ # UR Gap Analysis — 2026-08-11 Implemented Release Audit
2
2
 
3
- Baseline: UR `ur-agent@1.79.1`, HEAD `6faed11`, 186 slash commands, 60 tools.
4
- Upstream references: Claude Code 2.1.226 (2026-08-08), Codex CLI (Aug 2026),
5
- Gemini CLI v0.53.0 (2026-07-28), MCP spec `2026-07-28`, A2A v1.0 (Apr 2026).
3
+ Baseline audited: `ur-agent@1.79.1`, commit `6faed11`. Release target: `1.80.0`.
4
+ Primary references were rechecked before implementation: Claude Code
5
+ 2.1.221–2.1.224, the final Model Context Protocol specification dated
6
+ 2026-07-28, and the Agent2Agent 1.0 release.
6
7
 
7
- Every "missing" row below was verified absent by grep over `src/`, and every
8
- "present" row by a concrete file reference. Re-check primary sources before
9
- acting: prerelease standards move weekly.
8
+ ## Result
10
9
 
11
- ---
10
+ All recommended gaps that strengthen UR without weakening its operator trust
11
+ boundary are implemented. “Approve all”/`autoApprove` remains available and
12
+ unchanged. UR does not add automated approval delegation.
12
13
 
13
- ## 1. Already at parity — no action
14
-
15
- UR is closer to the frontier than the trend doc implies. Confirmed present:
16
-
17
- | Upstream feature | UR implementation |
14
+ | Area | Release result |
18
15
  |---|---|
19
- | MCP `2026-07-28` stateless core | `src/services/mcp/mcp2026.ts` (`MCP_2026_PROTOCOL_VERSION = '2026-07-28'`) |
20
- | MCP Tasks extension (`tasks/get`, `tasks/update`, `tasks/cancel`) | `src/entrypoints/mcp2026.ts`, `src/services/mcp/mcp2026.ts` |
21
- | MCP Apps (sandboxed HTML UI) | `ui/initialize`, `ui/resourceUri` in `mcp2026.ts` |
22
- | MCP Extensions namespacing | `io.modelcontextprotocol/protocolVersion` header + `_meta` cross-check |
23
- | A2A v1.0 signed Agent Cards | `src/services/agents/a2aCardSignature.ts` (Ed25519 detached JWS), `a2aV1.ts` |
24
- | ACP / AG-UI servers | `src/services/agents/acpServer.ts`, `agUi.ts` |
25
- | Cross-session agent messaging | `SendMessageTool`, `ListPeersTool` |
26
- | Nested subagents with depth/concurrency caps | `src/tools/AgentTool/fanOutLimits.ts`, `fanOutSettings.ts` |
27
- | Self-hosted runner | `src/self-hosted-runner/main.js`, gated by `feature('SELF_HOSTED_RUNNER')` |
28
- | `--teleport`-style local continuation | `src/main.tsx`, `src/assistant/sessionHistory.ts` |
29
- | `AGENTS.md` interop | `src/utils/agentmd.ts`, `memoryFileDetection.ts` |
30
- | OpenTelemetry instrumentation | `src/utils/telemetry/instrumentation.ts` |
31
- | Headless spend cap | `--max-budget-usd` in `src/main.tsx` |
32
- | Plugin marketplace + search/show | `ur plugin search|show` (1.79.0) |
33
- | Codex `/plan`, `/goal`, `/fork`, `/diff`, `/review` equivalents | `src/commands/{plan,goal,diff,review}` |
34
-
35
- Notable divergence, deliberate or not: Anthropic **removed** `ultraplan` in
36
- Claude Code 2.1.222 (2026-08-04). UR still ships `/ultraplan`. Worth deciding
37
- whether that is a differentiator or dead weight.
38
-
39
- ---
40
-
41
- ## 2. Missing ranked by value
42
-
43
- ### P0 security correctness
44
-
45
- **1. Sandbox credential masking / TLS-terminating egress proxy.**
46
- Claude Code 2.1.221–2.1.224 added `sandbox.credentials` masking with
47
- `mode: "mask"` sentinel files, `extract` regex spans, `decode: "jwt"` +
48
- `maskClaims`, and `awsPairs`/`sigv4` re-signing behind `network.tlsTerminate`.
49
- UR's sandbox is filesystem-scope only `src/utils/sandbox/sandboxProfile.ts`
50
- implements `denyRead`/`denyWrite` and nothing else. A sandboxed Bash command in
51
- UR that can read `~/.aws/credentials` exfiltrates the real secret.
52
- *Likely same bug present:* upstream patched a trailing-slash bypass where
53
- `denyRead: "~/.aws/"` was silently ignorable. UR's `normalizedPaths()`
54
- (`sandboxProfile.ts:51`) dedupes and calls `normalizePath()` but performs no
55
- trailing-slash stripping of its own — verify `normalizePath` handles it, and add
56
- a regression test for both `~/.aws` and `~/.aws/`.
57
-
58
- **2. `sandbox.network.strictAllowlist` (partial gap).** UR *does* have a network
59
- allowlist `sandbox.network.allowedDomains`, `allowManagedDomainsOnly`,
60
- `allowUnixSockets` in `src/utils/sandbox/sandbox-adapter.ts`. What's absent is
61
- the strict mode: deny non-allowlisted hosts outright instead of prompting.
62
- Under automation (`ur exec`, `ur bg`, agentic CI) a prompt is not an answer, so
63
- today an unattended run either stalls or falls through. One settings key plus a
64
- branch in the egress decision path.
65
-
66
- **3. `Tool(param:value)` permission-rule syntax.** `permissionRuleParser.ts`
67
- supports only `Tool(content)`. Upstream added input-parameter matching with
68
- wildcards — e.g. `Agent(model:opus)` to block expensive subagents,
69
- `Bash(timeout:*)`. Without it, policies cannot constrain *how* a tool is called,
70
- only which paths it touches.
71
-
72
- **4. Bash permission-check hardening.** Upstream shipped three separate bypass
73
- fixes in Aug 2026: zsh hidden commands inside `[[ ]]` regex conditionals,
74
- commands padded with tabs/invisible Unicode hiding text from the approval
75
- dialog, and PowerShell paths containing quote characters. These are parser
76
- classes, not one-off bugs — audit UR's command splitter against all three.
77
-
78
- ### P1 — runaway-loop containment
79
-
80
- **5. Per-session budgets, not just per-turn limits.** UR caps subagent depth and
81
- concurrency but has no session totals. Upstream added a WebSearch cap
82
- (default 200, `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION`) and a subagent-spawn
83
- cap, then *removed* the spawn cap once long sessions started failing — so ship
84
- the search budget, and make the spawn budget advisory rather than fatal.
85
-
86
- **6. `--forward-subagent-text` for stream-json.** UR has `--include-hook-events`
87
- and `--include-partial-messages` but no way to surface subagent text/thinking in
88
- headless output, including nested (depth-2+) agents keyed by spawning
89
- `tool_use` id. This blocks CI observability of delegated work.
90
-
91
- ### P2 — protocol currency
92
-
93
- **7. MCP `InputRequiredResult`.** The `2026-07-28` spec deprecates
94
- server-initiated elicitation and sampling in favor of `InputRequiredResult`.
95
- UR implements the old `Elicitation`/`ElicitationResult` hooks (`src/types/hooks.ts`)
96
- and has zero `InputRequired` references. Ship the new shape alongside the old.
97
-
98
- **8. MCP `roots/list` + `notifications/roots/list_changed`.** Absent entirely.
99
- Deprecated in `2026-07-28` (SEP-2577), but pre-2026 servers still expect it, and
100
- upstream wires additional working directories into it. Low effort, moderate
101
- compatibility win.
102
-
103
- **9. A2A gaps.** Two items: (a) `src/services/agents/trends.ts:666` advertises
104
- `protocolVersion: '0.3.0'` in the Agent Card while `a2aV1.ts` implements v1.0
105
- signing — the card lies about its own version; (b) no gRPC transport and no AP2
106
- payments extension, both part of the v1.0 surface.
107
-
108
- ### P3 — accessibility and ergonomics
109
-
110
- **10. Screen-reader mode.** Zero hits for `axScreenReader`/`--ax-screen-reader`.
111
- Upstream shipped opt-in plain-text rendering plus per-keystroke and
112
- per-deletion echo announcements. UR's Ink UI is unusable with a screen reader
113
- today. This is the single largest addressable-user gap in the list.
114
-
115
- **11. `/config key=value` from the prompt.** `src/commands/config/` exposes only
116
- the interactive panel. Upstream's `/config thinking=false` works in interactive,
117
- `-p`, and remote modes, with `/config --help` listing shorthand keys — the only
118
- way to change a setting inside a headless run.
119
-
120
- **12. `DirectoryAdded` hook.** UR has `CwdChanged` and `WorktreeCreate` but
121
- fires nothing on `/add-dir`. Blocks per-directory setup automation.
122
-
123
- **13. Explicit `ur session archive` / `unarchive`.** `archiveSession` exists only
124
- in `src/bridge/`. Codex exposes `/archive` in the TUI and `codex archive` in the
125
- CLI, with archived sessions protected from resume/fork. UR's session list grows
126
- without bound.
127
-
128
- **14. Vim insert-mode remaps.** `vimInsertModeRemaps` (e.g. `jj` → Escape) is a
129
- one-setting change against UR's existing `src/vim/`.
130
-
131
- **15. Telemetry completeness.** No `assistant_response` OTel log event, no
132
- `message.uuid`/`client_request_id`/`tool_source` correlation attributes, no
133
- `workflow.run_id`/`workflow.name`. UR has workflows and multi-agent runs but
134
- cannot reconstruct a run from OTel data.
135
-
136
- ---
137
-
138
- ## 3. Explicitly not recommended
139
-
140
- - **`EndConversation` tool.** Abuse-termination for a consumer chat product;
141
- irrelevant to a local terminal agent the operator already controls.
142
- - **Gateway spend-limit UX.** Presupposes Anthropic's managed gateway. UR's
143
- `--max-budget-usd` covers the local equivalent.
144
- - **`/dataviz` skill.** Content, not capability. Ship as a plugin if wanted.
145
- - **Codex `--approve-for-me`.** Routes approvals through automated review —
146
- directly opposed to UR's explicit-trust-boundary stance in
147
- `docs/FRONTIER_AGENT_FEATURES.md`.
148
-
149
- ---
150
-
151
- ## 4. Suggested sequencing
152
-
153
- 1. Credential masking + strict network allowlist (#1, #2) — same subsystem.
154
- 2. Bash permission parser audit (#4) + `Tool(param:value)` (#3).
155
- 3. Screen-reader mode (#10) — self-contained in `src/ink/`.
156
- 4. MCP `InputRequiredResult` + `roots/list` (#7, #8); fix the A2A card version (#9a).
157
- 5. Session budgets (#5), `--forward-subagent-text` (#6), OTel attributes (#15).
158
- 6. Ergonomics batch: `/config key=value`, `DirectoryAdded`, session archive,
159
- vim remaps (#11–14).
160
-
161
- Then update `docs/AGENT_TRENDS.md` — its snapshot line still reads
162
- `2026-08-10` and the coverage matrix predates the `2026-07-28` MCP final spec.
163
-
164
- ---
165
-
166
- ## Sources
167
-
168
- - [Claude Code changelog](https://code.claude.com/docs/en/changelog)
169
- - [Enabling Claude Code to work more autonomously — Anthropic](https://www.anthropic.com/news/enabling-claude-code-to-work-more-autonomously)
170
- - [The 2026-07-28 MCP Specification](https://blog.modelcontextprotocol.io/posts/2026-07-28/)
171
- - [The 2026-07-28 MCP Specification Release Candidate](https://blog.modelcontextprotocol.io/posts/2026-07-28-release-candidate/)
172
- - [The 2026 MCP Roadmap](https://blog.modelcontextprotocol.io/posts/2026-mcp-roadmap/)
173
- - [MCP 2026-07-28 spec: every breaking change, with fixes](https://stacktr.ee/blog/mcp-2026-spec-changes)
174
- - [Codex CLI in 2026: What's New, What's Changed](https://codex.danielvaughan.com/2026/03/27/codex-cli-in-2026-whats-new/)
175
- - [Codex Slash Commands: Complete CLI Reference (2026)](https://explainx.ai/blog/codex-slash-commands-complete-reference-guide-2026)
176
- - [Gemini CLI changelog v0.53.0](https://geminicli.com/docs/changelogs/latest/)
177
- - [Gemini CLI `/plan` command PR #17698](https://github.com/google-gemini/gemini-cli/pull/17698)
178
- - [A2A Protocol Guide 2026](https://rapidclaw.dev/blog/a2a-protocol-complete-guide-2026)
179
- - [MCP vs A2A vs AG-UI: Agent Protocols Guide 2026](https://nextpj.net/blog/mcp-a2a-ag-ui-ai-agent-protocols-guide-2026)
180
- - [The 2026 Guide to Coding CLI Tools: 15 AI Agents Compared](https://www.tembo.io/blog/coding-cli-tools-comparison)
16
+ | Credential-safe sandboxing | Added the official sandbox runtime, trusted-source-only `sandbox.credentials`, file/environment masking, regex extraction, JWT claim masking, AWS credential pairs, SigV4 rewriting, and `network.tlsTerminate`. |
17
+ | Strict egress | Added trusted `sandbox.network.strictAllowlist`; non-allowlisted destinations are denied instead of prompting. |
18
+ | Filesystem deny regression | Verified canonical path normalization handles both `~/.aws` and `~/.aws/`; regression tests cover both forms. |
19
+ | Parameter-aware permissions | Added `Tool(parameter:value)` matching with wildcards, including rules such as `Agent(model:opus)` and `Bash(timeout:*)`. |
20
+ | Shell approval hardening | Added tree-sitter enforcement for production Bash, zsh `[[ ... ]]` command-substitution detection, visible rendering for tabs/control/zero-width/bidirectional characters, and PowerShell quote-path validation. |
21
+ | Session containment | Added a 200-search default WebSearch session budget (`UR_MAX_WEB_SEARCHES_PER_SESSION`) and a non-fatal subagent-spawn advisory (`UR_SUBAGENT_SPAWN_ADVISORY_PER_SESSION`). |
22
+ | Headless subagents | Added `--forward-subagent-text` for nested assistant output in `stream-json`, correlated to the spawning tool-use ID. |
23
+ | Model Context Protocol | Added final `input_required` results and codes while retaining older elicitation compatibility. Existing roots support now includes all added directories plus `notifications/roots/list_changed`. |
24
+ | Agent-to-Agent cards | Audit disproved the reported mismatch: `protocolVersion: 0.3.0` belongs to the deliberately retained legacy card; the negotiated modern card is produced separately and signed correctly. No false version change was made. |
25
+ | Accessibility | Added `--screen-reader`, `screenReaderMode`, append-only plain-text rendering, edit announcements, and reduced animation. |
26
+ | In-session configuration | Added `/config key=value`, including thinking, screen reader, reduced motion, verbose output, auto-compaction, editor mode, and Vim escape sequence. |
27
+ | Directory automation | Added the `DirectoryAdded` hook and roots-change notification after `/add-dir`. |
28
+ | Session lifecycle | Added `/session status|list|archive|unarchive` and `ur session list|archive|unarchive`. Archived sessions cannot appear in resume/fork discovery until restored. |
29
+ | Vim input | Added `vimEscape=<sequence>`; for example, `/config editor=vim vimEscape=jj`. |
30
+ | Telemetry | Added privacy-safe `assistant_response` events, message/request/tool correlation, and workflow name/run identifiers. |
31
+ | Command quality | Removed the no-op `/output-style` command and dormant `/ultraplan` registration, renamed `/debug-v2` to `/fix-bug`, removed duplicate 3D aliases, expanded protocol names in help, and added registry checks against public version jargon. |
32
+
33
+ ## Corrected findings and deliberate omissions
34
+
35
+ - `roots/list` was not absent. UR already served the initial working directory;
36
+ this release extends it to added directories and change notifications.
37
+ - The old and modern Agent-to-Agent cards are separate negotiated compatibility
38
+ representations. The old card’s version is truthful and must not be relabeled.
39
+ - gRPC transport and AP2 payments are optional integrations, not correctness
40
+ requirements for UR’s local coding-agent surface. Shipping either without a
41
+ real transport consumer, payment policy, credential model, and end-to-end
42
+ conformance suite would add attack surface without useful capability, so they
43
+ are deliberately omitted.
44
+ - Anthropic removed `ultraplan` in Claude Code 2.1.222. UR’s registered command
45
+ was also permanently disabled, so the registration was removed as dead public
46
+ weight. Shared remote-planning internals used by active features remain.
47
+ - `EndConversation`, managed-gateway spend UX, `/dataviz`, and automated
48
+ approval delegation remain intentionally omitted. They either duplicate
49
+ existing controls, are content rather than capability, or weaken the explicit
50
+ operator trust boundary.
51
+
52
+ ## Primary sources
53
+
54
+ - [Claude Code 2.1.221](https://github.com/anthropics/claude-code/releases/tag/v2.1.221)
55
+ - [Claude Code 2.1.222](https://github.com/anthropics/claude-code/releases/tag/v2.1.222)
56
+ - [Claude Code 2.1.223](https://github.com/anthropics/claude-code/releases/tag/v2.1.223)
57
+ - [Claude Code 2.1.224](https://github.com/anthropics/claude-code/releases/tag/v2.1.224)
58
+ - [Anthropic sandboxing documentation](https://code.claude.com/docs/en/sandboxing)
59
+ - [Model Context Protocol 2026-07-28 release](https://blog.modelcontextprotocol.io/posts/2026-07-28/)
60
+ - [Model Context Protocol final schema](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/schema/2026-07-28/schema.ts)
61
+ - [Agent2Agent 1.0 changes](https://a2a-protocol.org/latest/whats-new-v1/)
62
+ - [Agent2Agent 1.0 specification](https://a2a-protocol.org/latest/specification/)
63
+ - [Agent Payments Protocol reference repository](https://github.com/google-agentic-commerce/AP2)
64
+ - [OpenTelemetry generative-AI attributes](https://opentelemetry.io/docs/specs/semconv/registry/attributes/gen-ai/)
package/docs/USAGE.md CHANGED
@@ -25,8 +25,29 @@ ur --add-dir ../other-project
25
25
  ur --permission-mode ask
26
26
  ur --continue
27
27
  ur --resume
28
+ ur --screen-reader
28
29
  ```
29
30
 
31
+ Useful commands from inside UR:
32
+
33
+ ```text
34
+ /config thinking=false screenReader=true
35
+ /config editor=vim vimEscape=jj
36
+ /session list
37
+ /session archive
38
+ /session unarchive <session-id>
39
+ /fix-bug describe the failure and reproduction steps
40
+ /research init current-tools --question "What changed?"
41
+ /design3d doctor
42
+ /design3d init product-shot --engine blender --units mm --format blend
43
+ /design3d init studio-scene --engine 3dsmax --units cm --format max
44
+ ```
45
+
46
+ `/design3d doctor` reports installed applications. `MISSING` means that optional
47
+ application is not installed or is not on `PATH`; it is not a UR failure. On
48
+ macOS, Autodesk 3ds Max is expected to be missing because it is a Windows
49
+ application. Use Blender locally, or run the 3ds Max project on a Windows host.
50
+
30
51
  When UR needs a focused clarification, it uses the `AskUserQuestion` dialog.
31
52
  Professional clarification prompts can provide up to eight concrete options;
32
53
  UR also accepts custom "Other" answers when the dialog includes one.
@@ -49,8 +70,13 @@ Output formats:
49
70
  ur -p --output-format text "explain src/main.tsx"
50
71
  ur -p --output-format json "return a JSON summary of this repo"
51
72
  ur -p --output-format stream-json "stream progress while answering"
73
+ ur -p --output-format stream-json --forward-subagent-text "delegate and stream nested results"
52
74
  ```
53
75
 
76
+ WebSearch allows 200 provider searches per session by default. Set
77
+ `UR_MAX_WEB_SEARCHES_PER_SESSION` to another positive integer, or to
78
+ `unlimited` only for a trusted long-running job.
79
+
54
80
  Structured output can be validated with a JSON schema:
55
81
 
56
82
  ```sh
@@ -264,6 +290,8 @@ hooks:
264
290
  ```
265
291
 
266
292
  Hooks are advisory by default. A `BeforeEdit`/`BeforeCommand`/`BeforeCommit` hook can block the action by returning `{"decision":"block","reason":"..."}` or exit code 2. `AfterEdit` and `OnFailure` hooks can return `{"hookSpecificOutput":{"hookEventName":"...","memory":{"kind":"accepted","text":"..."}}}` to append project memory automatically.
293
+ `DirectoryAdded` fires after `/add-dir` authorizes and adds a directory, so
294
+ plugins and project automation can initialize directory-specific state.
267
295
 
268
296
  ## Commands
269
297
 
@@ -272,7 +300,7 @@ UR includes slash commands and CLI subcommands for common workflows:
272
300
  - `/help` or `ur --help` for command discovery
273
301
  - `ur connect ...` to connect provider accounts (subscription login or stored API key)
274
302
  - `ur mcp ...` to configure MCP servers, run the stdio server, or start the
275
- opt-in stateless MCP 2026 Tasks/Apps adapter with `ur mcp serve-http`
303
+ opt-in stateless Model Context Protocol Tasks/Apps server with `ur mcp serve-web`
276
304
  - `ur ag-ui serve` to expose the secure AG-UI HTTP/SSE adapter to an explicitly
277
305
  allowed user-facing application
278
306
  - `ur plugin ...` to manage plugins and marketplaces. Marketplace plugins can
@@ -319,7 +347,7 @@ UR includes slash commands and CLI subcommands for common workflows:
319
347
  - `ur artifacts ...` to capture reviewable diffs, test runs, notes, feedback,
320
348
  and bounded non-symlink attachments with safe download headers/MIME fallback
321
349
  - `ur ide diff ...` to capture editor-readable inline diff bundles
322
- - `ur acp stdio` for the official-SDK ACP v1 editor transport with durable
350
+ - `ur acp stdio` for the standard Agent Client Protocol editor transport with durable
323
351
  list/load/delete/resume, modes, config options, and commands; and
324
352
  `ur acp serve|stop|status` for the separate UR HTTP JSON-RPC API
325
353
  - `ur exec ...` to run prompts in non-interactive mode with optional concurrency
@@ -372,7 +400,7 @@ UR includes slash commands and CLI subcommands for common workflows:
372
400
  money column is omitted rather than printing a wall of `$0.00`. Add `--json`
373
401
  for the raw rows.
374
402
  - `ur role-mode ...` to install built-in Architect, Code, Debug, and Ask role modes
375
- - `ur a2a ...` for negotiated v1 JSON-RPC/HTTP+JSON, the stable v0.3 SDK
403
+ - `ur a2a ...` for a negotiated Agent-to-Agent server with automatic compatibility
376
404
  binding, scoped delegation tokens, durable protocol state, and separate UR
377
405
  compatibility task routes
378
406
  - `ur sdk ...` to scaffold TS/Python headless SDK examples
@@ -501,7 +529,7 @@ ur context-pack remember --decision "Keep streaming" --cite-file src/parser.ts -
501
529
  ur context-pack memory verify
502
530
  ur context-pack memory revalidate
503
531
  ur context-pack compress
504
- UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http --port 8976
532
+ UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-web --port 8976
505
533
  ur acp serve --port 8123
506
534
  ur exec "add tests for the parser" --concurrency 4 --json
507
535
  ur ci-loop --command "bun test" --cwd . --dry-run
@@ -19,7 +19,7 @@ You need:
19
19
 
20
20
  ```sh
21
21
  ur --version
22
- # expected for this release: "1.79.1 (UR-Nexus)"
22
+ # expected for this release: "1.80.0 (UR-Nexus)"
23
23
  ```
24
24
 
25
25
  ## 0.1 First-workspace model selection (1.45.4)