Repository navigation
Releases
Releases · DavidGodefroid/lockkit
v0.19.1
What's Changed
- perf(pii): prefilter the regexp value finders by @DavidGodefroid in #196
- release: v0.19.1 by @DavidGodefroid in #197
Full Changelog: v0.19.0...v0.19.1
v0.19.0
What's Changed
- feat(pii): eu_vat and be_company detectors, match confidence, context words (#130, part 1) by @DavidGodefroid in #189
- feat(pii): be_eid, passport and birth_date detectors (#130, part 2) by @DavidGodefroid in #190
- feat(pii): plate and postal_address detectors; fix bench gaps (#130, part 3) by @DavidGodefroid in #191
- fix(managed): Decode accepts nested tables under maps by @DavidGodefroid in #193
- release: v0.19.0 by @DavidGodefroid in #194
Full Changelog: v0.18.0...v0.19.0
v0.18.0
What's Changed
- feat(console): :reopen a refused policy loosening by @DavidGodefroid in #177
- fix(console): record the :review policy diff with its question (#160) by @DavidGodefroid in #178
- feat(managed): trust the stamp lox writes after verifying the signature on the host (#175) by @DavidGodefroid in #179
- agentwire: allow nothing for a foreign MCP entry; product consent note (#109) by @DavidGodefroid in #181
- feat(console): export LoadManaged and CheckManaged for products with their own start-up (#176) by @DavidGodefroid in #182
- feat(ticket): human-typed inputs sealed in a plan ticket's decision (#174) by @DavidGodefroid in #183
- fix(console): record start questions on first start (#180) by @DavidGodefroid in #184
- verbs, config: review follow-ups of #117/#119; remove auto-mode deprecations (breaking) by @DavidGodefroid in #186
- feat(pii): public PII detection bench with a CI baseline (#129) by @DavidGodefroid in #185
- feat(update): PublicKey trust roots in VerifyFiles (#15) by @DavidGodefroid in #187
- release: v0.18.0 by @DavidGodefroid in #188
Full Changelog: v0.17.0...v0.18.0
v0.17.0
What's Changed
- fix(console): run a ticket decided within 2 s in the same call (#162) by @DavidGodefroid in #168
- fix(mcpkit): give middleware-built tool results their resultType (#164) by @DavidGodefroid in #169
- feat(managed): company-managed configuration package and console bounds (#166) by @DavidGodefroid in #170
- feat(pii): detect person-name columns from sampled values by @DavidGodefroid in #171
- fix(console): apply the profile's ticket limits to the hub client (#150) by @DavidGodefroid in #172
- release: v0.17.0 by @DavidGodefroid in #173
Full Changelog: v0.16.1...v0.17.0
v0.16.0
What's Changed
- console: record the lines above a question in its file (#152) by @DavidGodefroid in #154
- End plans on hub withdrawals, 1 h read TTL by @DavidGodefroid in #155
- fix(sanitize): escape format and invisible characters in Terminal by @DavidGodefroid in #156
- fix(console): record only opted-in context with a question by @DavidGodefroid in #157
- fix(console): answer a rate-limited ask with its own limit and retry-after by @DavidGodefroid in #159
- release: v0.16.0 by @DavidGodefroid in #161
Full Changelog: v0.15.0...v0.16.0
v0.15.0
What's Changed
- hubclient: raise the ticket rate limit to 30/5min, don't count auto-decided tickets, configurable limits by @DavidGodefroid in #151
- release: v0.15.0 by @DavidGodefroid in #153
Full Changelog: v0.14.1...v0.15.0
v0.14.1
- Texts name
lox run(lox upis deprecated):client.StartHintand
client.StartCommand,console.ErrNoHub, the help of the--hub,
--devices-fileand--facade-keys-fileflags, GUIDE.md and doc
comments. No behavior, flag, label or file name changes (#147). - README: a library README on the Lock Family template (#146).
v0.13.1
- A
pii.addrefused by the product's backend is audited by the console
aspolicy/failedwith the client's peer (peer_uid,peer_pid,
peer_user), also before the agent's first other call: aCheckMask
refusal with the fixed errorpii.add refused by the backend: invalid patternand no pattern (neither the raw pattern nor the backend's
text, which may quote it), aSaveMaskrefusal with the canonical
patternandmask rule not saved: <error>.PIIBackendis
unchanged; products (locklog) no longer audit these refusals
themselves, or the record is written twice (#142). - README: the first line says lockkit is part of the Lock Family,
harness security for AI agents (lockfamily#19).
v0.13.0
- Ticket kinds: a
ticket.VersionKinds(2) ticket names what it asks for
(Kind: connect, read, write, ddl, action, endpoint, policy, each with
the risk classesKindRisksallows) and its structured request
(Subject: profile, endpoint, credential source, verb, target), for
lox run's rules; a version-2 decision names its decidingRule(auto
rule id, or human) and may carry the backend's secret sealed to the
lock (Secret;SealSecret,OpenSecret). Version-1 tickets and
decisions encode and verify unchanged; a version-2 ticket needs a
version-2 decision, and an auto approval of aNeverAutoticket is
ErrAuto. New fixturesticket-connect-v2.json,
decision-connect-approved-v2.json,keys-connect-v2.json. The
unmasked subject is bounded:Endpointishost[:port][/path](no
DSN keywords, query, options, escapes or whitespace),Targethas no
whitespace, query or fragment;Subject.Validateand
NewConnectTicketrefuse the rest (#132). - New package
lazyconn: a lock opens a profile's backend connection on
the approval of a connect ticket (hubclient.Client.Ask), shares it,
closes it when idle (DefaultIdle, configurable) and asks again
afterwards; the secret of anaskprofile goes from the decider to the
lock sealed, never through the agent or the hub in clear (#132). console.HubTicket.Kind/Subjectpush a plan's ticket as a version-2
one; a renewal keeps the expired ticket's kind and subject;
hubtest.Hubanswers a version-2 ticket with a version-2 decision and
lists what it sent (Decisions) (#132).- A policy change of a connection setting ends the console session, a
tightening as well as an approved loosening: besides where/user/host/
port, the console now checks the credentials mode and Vault path
(Profile.Credentials,Profile.VaultPath) and every shared connection
field of the policy diff (config.ConnectionField:tls,tls_ca,
tls_cert,tls_key,sshandssh.*, asconfig.DiffBasenames
them). A tightened tls mode or bastion is no longer announced as applied
while the live connection keeps the old settings (#7). - The idle timeout counts only the human's input (console lines and
control keys) and the backend's methods as activity, a method's end
included (a long approval is activity):hello,status,pii.list,
pii.add,change.requestno longer reset it, so an agent polling
statusno longer keeps an unattended console open until
max_session(#10). mcpkit.Exact(and soExactRows) also turns a plainintoruint
outside ±2^53 into its decimal string, as it did forjson.Number,
int64anduint64: such a cell no longer reaches the client rounded
by the SDK's float64 output validation (#11). Products with their own
copy of this rule (locksql'sexactCell) should callmcpkit.Exact.- A client's
pii.addis audited with the client behind it (peer_uid,
peer_pid,peer_user) and the pattern added (newaudit.Basefield
Pattern, JSONpattern), on thetightenedrecord and on any
failed/unsavedrecord of that change: it is told apart from a
tightening the human made in the files, which has neither (#6). - On a production profile, every widening the console decides itself
takes the profile name typed exactly instead ofy, as a request
does: the policy review at start and a loosening at:review(Apply these changes? Type the profile name "prod" to apply them:; turning
production off is a loosening of a production profile, so it takes the
name too) and:unmask(Allow unmasked output? Type the profile name "prod" to allow it:). Outside production they still takey. When
the start-up review ofconsole.Runwas approved with the name, the
secondType the profile name "P" to continue:prompt is no longer
asked; the name record (ConfirmedKey(key)) is written as before
(#8). - New
console.WidenDecision(question, verb, forText, production, profile): theDecisionof such a widening (question [y/N]outside
production, the typed profile name on production), for a product's own
widenings (#8).
lockkit v0.12.1
What's Changed
- ci: run macOS on main and nightly, not on pull requests by @DavidGodefroid in #126
- fix(console): production name once per approved policy; record the pending question (#127) by @DavidGodefroid in #128
- release: prepare v0.12.1 by @DavidGodefroid in #131
Full Changelog: v0.12.0...v0.12.1