Changelog
Customer-facing rollup of recent shipped work. The most recent items are first. For finer-grained engineering history, see the in-repo CHANGELOG.md.
2026-05-18, dashboard
- Approvals rename. "HITL" is now called "Approvals" everywhere in the dashboard. Functionality unchanged. (PR #597)
- PostHog identifier scrub. Dashboard analytics no longer transmits email addresses. Identifiers are now restricted to the non-reversible identity provider UID. (PR #595, PR #596)
- Approvals RBAC narrowing. Only org admins and owners can edit approval policy settings or revoke active grants. Non-admins see a disabled action with explanatory tooltip. (PR #588, PR #591, PR #592)
- Approvals dashboard. Bell badge for pending requests,
/approvalspage with filters, per-approval drawer, grants table, settings UI. (PR #581, PR #585)
2026-05-17, SDKs
- Python SDK
1.6.0. Full Approvals support:request_approval,PendingApproval.wait,get_secretwrap with leak guard, eleven new exception classes (E1701throughE1711), andcontrolzero test --hitl approve|deny|timeoutfor local mocking. (PR #578) - Node SDK Approvals parity.
requestApproval,wait, andgetSecretshipped on@controlzero/sdk1.9.x. (PR #582) - Go SDK Approvals parity.
RequestApproval,Wait, andGetSecretshipped oncontrolzero.ai/sdk/gov1.7.x. (PR #584)
2026-05-15, releases and trust
- Phase 1A args fingerprinting across all three SDKs. Every SDK now produces an RFC 8785 canonical hash of guarded-call arguments. Same arguments produce the same hash on every SDK and every machine, without ever transmitting the raw values. (PR #463)
- Python SDK
1.5.7and Go SDKv1.7.5. Clean releases that scrub customer-context strings and inline notes from the published artifact. See the May 2026 security advisory for the full disclosure. (PR #530, PR #529) - IP scrub gate. A pre-push detector now blocks any commit that would publish customer names, realistic-looking key fixtures, or internal hostnames to PyPI, npm, the Go proxy, or the docs site. (PR #528)
2026-05-12 to 2026-05-13, customer fix sprint
- Policy republish bug. Republishing a library policy now reliably propagates the new version to every project that has it attached. The dashboard and the SDK no longer drift. (PR #207)
resources: ["*"]wildcard. Rules using the universal resource wildcard now match every call, with or without a caller-supplied resource. Narrow resource patterns still require an explicit match, so narrow rules stay narrow. (See Policy enforcement fixes, 2026-05-11.)- Provider recovery for empty orgs. A customer dashboard hang triggered by an org with zero projects is fixed; the dashboard now renders an empty-state instead of looping. (PR #422)
2026-05-11, dashboard
- Split-zone Governance Home. Lifetime counts on top ("at a glance"), period-scoped activity below, with clickable drill-down tiles for projects, policies, API keys, and tools. Returning users with stale data get a
[View 7d]/[View 30d]jump rather than a full re-onboarding takeover. (PR #203) /get-startedroute. Four-step server-persisted onboarding checklist, deep-linkable via?lang=python&mode=cloud. Auto-advances on key copy, snippet copy, and first audit row. (PR #203)
Earlier
For changes before May 2026, see the in-repo CHANGELOG.md or filter by milestone on the GitHub issue tracker.