Repository navigation
t18697: aidevops secret dependents: show what uses a credential before rename, rotation or revocation #34719
Description
Task
Add aidevops secret dependents NAME, so an operator can see what uses a credential before renaming, rotating or revoking it. Phase 3 of #34680 (guarantee 7).
Full task brief and audit context
Task Brief
What
Add aidevops secret dependents NAME, so an operator can see what uses a credential before renaming, rotating or revoking it. Phase 3 of #34680 (guarantee 7).
Why
Checking what a rename would break needed a manual search across every repo and worktree, and it still missed a script that builds secret names from parts.
How
- New
.agents/scripts/credential_inventory_dependents.py. It searches the following for the name and its declared aliases:- every repo path in
~/.config/aidevops/repos.jsonand its linked worktrees (git grep -F --untracked, bounded); ~/.aidevops/agents/custom/;- local aidevops JSON configs such as
site-inventory.jsoncredential_env; - LaunchAgents plists and
crontab -l.
- every repo path in
- Detect dynamic construction (a provider prefix plus
${/string concatenation with a kind suffix on the same line). Report it aspossible-dynamic, and setcomplete: false, so the result never claims "no dependents" when coverage is unproven. - Output text or
--json; local only, never posted. - Delegate from
.agents/scripts/secret-helper.sh.
Files Scope
.agents/scripts/credential_inventory_dependents.py.agents/scripts/credential_inventory.py.agents/scripts/secret-helper.sh.agents/tools/credentials/credential-inventory.md
Acceptance Criteria
-
aidevops secret dependents NAME --jsonlists literal matches (repo, path, line) across registered repos and worktrees, including alias matches. - A line building the name dynamically (e.g.
"CLOUDFLARE_${ACCOUNT}_API_TOKEN") is reported aspossible-dynamicwithcomplete: false; the result never states that the name is unused when such lines exist. - The command reads no secret values and makes no network calls.
Verification
Run the product path against temporary repos containing literal and dynamic references; python3 -m py_compile; shellcheck.
Parent: #34680
Brief workflow contract
Brief Workflow
This issue body is composed under .agents/workflows/brief.md. Newly queued auto-dispatch work must pass its Dispatch Readiness Contract (brief schema v2): complete write surface, hazards and compatibility, executable verification mapped to affected surfaces, and positive plus negative/regression acceptance criteria.
Parent: #34680
Synced from TODO.md by issue-sync-helper.sh
aidevops.sh v3.39.31 plugin for OpenCode v1.19.0 with claude-opus-5-5 spent 13m and 21,279 tokens on this with the user in an interactive session.
Activity
marcusquinn commentedon Oct 14, 2026
aidevops.sh v3.39.31 plugin for OpenCode v1.19.0 with claude-opus-5-5 spent 13m and 21,279 tokens on this with the user in an interactive session.
github-actions commentedon Oct 15, 2026
Completed via PR #34733. Task t18697 merged to main.
aidevops.sh vunknown automated scan.