Repository navigation
feat(admin): deedkit admin key list and label; messaging and calendar key inventories (ANYM-494) - #281
Merged
Conversation
egerev
marked this pull request as ready for review
October 24, 2026 09:02
…ll/key-info; calendar list-agents/agent-info (ANYM-494) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: egerev <egor@gosync.ai>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: egerev <egor@gosync.ai>
…olicy pin, keeps backend-wide findings under --principal, stops its own container on timeout (ANYM-494) Astra r1 findings 1-8: findings for disabled/expired principals and revoked/expired unbound keys; credential_pin_mismatch; backend_unavailable kept with --principal and for a missing calls registry; shared_credential needs two principals; docker stop of the invocation's container on timeout/interrupt and a 5 s statement timeout on the calendar reads; a failed inventory keeps the lookups; read_private refuses oversized or changed files; container log egress documented. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: egerev <egor@gosync.ai>
…ep the original test name (ANYM-494) Astra r2 minors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: egerev <egor@gosync.ai>
egerev
force-pushed
the
feat/admin-cli-keys
branch
from
October 24, 2026 09:03
b0a237d to
2618168
Compare
egerev
enabled auto-merge
October 24, 2026 09:04
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
deedkit admin key list(ANYM-494): one read-only view of every agent key. It shows one row per gateway principal with its messaging, calendar and calls credentials (public ID, expiry,live | revoked | expired | missing,unknownwhen a backend is unavailable) and the findings where the stores disagree.deedkit admin key labelkeeps labels in a private 0600 admin file that no service reads, so the policy schema stays the same.list-keys --all(every key, public fields) andkey-info --key-file(one token per line, max 100 / 64 KiB, input order, never a digest)list-agentsandagent-info --key-file(same contract)scripts/deedkit_admin.py(new, stdlib only).scripts/deedkit.py adminroutes to it. Template:deploy/admin.example.jsonDesign choices:
created_at= the earliest operatorissue_keyaudit row, found by one aggregate scan of audit_log (there is no key_id index). It isnullwhen no such row exists. The scan is bounded by the existing 5 s messaging statement timeout; on a very large audit_log the inventory call times out and only that backend'sunbound_keyfindings are lost (backend_unavailable), the per-key lookups stay. No index is added here.unbound_keycovers every backend key no principal holds and carries its status.credential_pin_mismatchwhen a key file does not match the policy'skey_sha256(content-free). With--principal,backend_unavailableof a used backend stays, so--strictfails.--key-file /dev/stdin), never in argv or env. The calls registry is matched by sha256 in memory.docker stop, 30 s bound); calendarlist-agents/agent-inforun with a 5 s statement timeout. The one-shot container's stdout (public IDs only) sits in its Docker log untilrun --rmremoves it (production.md).Deployed-version compatibility: the host CLI needs messaging and calendar images built from this PR (the c4a7285 images lack
list-keys --all,key-info,list-agents,agent-info). Until those are deployed it reportsbackend_unavailable. No schema, policy format, gateway orproduction.pychange.Spec
Spec: ANYM-494
Delivers: ANYM-494
Change path: AUTO+review (signal grep: only comment and test words such as
secretandstore.revoke; no section-2 item: no role SQL, permissions, compose, migration or ruleset)Spec impact:
Settle text: none
Not built here: [open: live] one
deedkit admin key liston production (after deploy, read-only).Tests
--strict, labels outside service files, no secret in output; r1 regressions: disabled/expired principals, revoked/expired unbound keys,--principalkeeps backend failures, missing calls registry, pin mismatch, no self-sharing, inventory failure keeps lookups, container stop on timeout/interrupt, oversized/changing private file). The 16 r1 regression cases fail on the pre-fix script and pass on 395113b (local run).Review
--principal --strictpassed on a backend failure; missing calls registry), 3 (policy pin not checked), 4 (self-sharing), 5 (timeout cleanup, calendar statement timeout), 6 (lookups kept on inventory failure; scan bound stated above), 7 (private reader truncation), 8 (container log egress documented), 9 (packet: no product-context projection read; inputs were the card text and the diff).Model: claude-opus-5-5 high
🤖 Generated with Claude Code