Skip to content

Tera Pilot v2.3.4

Choose a tag to compare

@ilyaosovskoi ilyaosovskoi released this 19 Aug 17:31
· 27 commits to main since this release

v2.3.4 — Security hardening, data-integrity fixes, offline licensing, GUI polish

Security hardening (offensive-testing driven)

Five real vulnerabilities were found and fixed this cycle (details in SECURITY_TEST_REPORT.md):

  • git sandbox: !-aliases and exec-capable config keys (core.fsmonitor, core.editor, diff.*.textconv, filter.*.clean/.smudge, …) could execute arbitrary shell — including when a malicious repo ships them in its own .git/config/.git/hooks. Neutralized at runtime for every agent git call.
  • CORS: localhost.evil.com used to be echoed as an allowed origin (string-prefix check), exposing api_token — now matches exact loopback hosts only.
  • Encrypted prompts: fail closed without cryptography; insecure XOR fallback removed.
  • npm scripts: npm run aliases (test, exec, start, …) execute arbitrary package.json scripts — all blocked; auto-detected test/lint commands require approval.
  • web_fetch: loopback targets refused (local API token can't be exfiltrated).
  • Constant-time token comparison (API + daemon), request body size caps, /api/context/pin|unpin → POST, daemon closes SSE streams for finished tasks.

Covered by 96 security tests + 36 sandbox/command tests (full suite: 448 tests).

Data integrity & reliability

  • Command pipes drained while child runs — large test/lint output no longer hits a spurious 60 s timeout with zero captured output.
  • GUI Undo actually works (shared checkpoint manager); rewind restores the latest backup at-or-before the target checkpoint.
  • Learning-loop entries get unique LEARN-YYYYMMDD-NNN ids after dismissal.
  • SSE streams close right after done — no more "success reported as timeout" (eval runs dropped from ~300 s hangs to ~25 s).
  • repetition_guard (repetition-dominated response detection) and think_scrubber (streaming reasoning-block scrubber) ported from hermes-agent (MIT).

Offline licensing (zero-telemetry Pro gating)

  • Ed25519-signed license keys verified entirely offline — no network calls during checks (test-enforced). tera-pilot license activate|status|deactivate. See LICENSING.md.

M1/M2/M3 completion

  • Second Opinion / Cost Router / Spend Dashboard gating enforced identically across TUI / Web UI / HTTP daemon / CLI; fixed wiring bugs that made /api/second_opinion/run and /api/cost/* always error; 10 integration tests.

GUI & TUI

  • Smart auto-scroll with "Jump to latest" pill; Settings always opens the full modal; About shows the real backend version.
  • Open project end-to-end: macOS directory picker no longer crashes the backend, picker failures fall back to manual entry with a working Browse button, project context index built lazily (50k files / 5 s), file tree refreshes after switch, Cmd+O binding, /cd ~ in the TUI.

Eval harness

  • Retries "another agent request is already running" collisions with backoff.
  • A run whose tests passed (agent actually ran) is no longer masked by a terminal driver error.
  • First analyzed batch (2026-08-19): eval/REPORT_2026-08-19.md — 12/27 meaningful runs verified, 8/9 tasks solved at least once. Raw run logs are not versioned.

Docs

Version: 2.3.4 in package.json, pyproject.toml, tera_pilot/__init__.py, agent/__init__.py, auto_updater.py, web APP_VERSION.