v0.7.0 — security-audit remediation, supply-chain hardening, governance
The first substantial remediation of the #288 security audit. All three High-severity findings are closed, along with three Mediums.
This is a hardening release, not a feature milestone — and it is the first release whose headline is community work.
⚠️ Read before upgrading — three changes require operator action
This is why v0.7.0 is a minor and not a patch (ADR 0025).
| # | What changes | What you must do |
|---|---|---|
| #396 | The gateway now requires its key on /v1/chat/completions and /v1/embeddings |
Nothing in the default topology — the api already sends it. A deployment calling the gateway directly without a key gets 401 on every inference call. |
| #399 | The api refuses to start if JWT_SECRET is still the published dev default |
Set JWT_SECRET to a strong random secret (or LQ_AI_DEV_MODE=true for local dev). |
| #400 | The gateway refuses to start if any provider base_url is plaintext http to a non-local host |
Move remote providers to https. Loopback and private IPs over http are unaffected, so a local Ollama needs no change. |
Security — all three Highs closed
| Finding | Severity | PR |
|---|---|---|
| GW-01 — gateway inference/embeddings accepted unauthenticated requests | High | #396 |
| API-01 — cross-tenant IDOR at chat creation | High | #397 |
| D-01 — stored XSS in the skill source viewer | High | #398 |
GW-04 — provider base_url SSRF/egress guard |
Medium | #400 |
AG-01 — autonomous retrieve_chunks scoped to the session owner |
Medium | #401 |
| API-04 — dev-JWT-secret boot guard | Medium | #399 |
Sixteen of the audit's 22 findings remain open and are listed honestly in the full notes.
Also in this release
- uv-managed lockfiles for
api/andgateway/(ADR 0023), reproducible across the SBOM - Staged release pipeline (ADR 0025) — the image build now gates backend before frontend, with a
version-consistencycheck on every tag - starlette 0.48 → 1.3.1, cryptography 44 → 49, and a large dependency sweep
- Migration 0066 — knowledge bases listed by the
project_knowledge_basesjunction, with a backfill. Runs on migrate; no operator step. - Governance —
GOVERNANCE.mdwith ADR 0022 accepted, plus ADR 0024 and the expansion direction paper
Who built this release
Every audit-remediation PR in this release was written by a contributor from outside the maintainer team. All three Highs, all three Mediums, the two follow-ups, and the Actions SHA-pinning are @SaifAlYounan's work — nine PRs, the first landed 2026-07-08.
Four people landed their first commit on main here:
@SaifAlYounan (the #288 remediation),
@mkorpela (#259, Windows entrypoint line-endings),
@sgbooth (#281, the Vite-HMR dev flow),
@sergiomaldo (#442, knowledge-base listing).
And @ThurgyThurg came back to finish the caddy-tailscale recipe (#261) first started in #134.
Thank you — the security-critical work in this release came from the community.
Images
ghcr.io/legalquants/lq-ai-api:v0.7.0
ghcr.io/legalquants/lq-ai-gateway:v0.7.0
ghcr.io/legalquants/lq-ai-web:v0.7.0
ghcr.io/legalquants/lq-ai-proxy:v0.7.0
All four are multi-arch (amd64 + arm64), carry SLSA build provenance, and are cosign-signed with an SBOM attached.
macOS app
Download LQ.AI-0.7.0-arm64.dmg from Assets below (Apple Silicon; signed and notarized).
It ships against the v0.7.0 image set above. Note that the launcher currently pulls the:latest image tag rather than pinning v0.7.0, so an install will follow future image releases —see ADR 0025 decision 2.
📄 Full release notes — including the complete list of what did not ship.