--- name: gitea-token-from-http-credential-store description: "Extract the Dankclaw Gitea token from ~/.config/secrets/gitea for API calls to PRIVATE repos, and diagnose the empty-token 404 that looks like a missing repo." --- The Gitea credential store line on Frank's boxes is **http** (not https) with a percent-encoded port: ``` http://dank:<40-char-token>@192.168.0.143%3a3000 ``` ## Extraction that actually works ```bash tok=$(sed -nE 's#^[a-z]+://[^:]+:([^@]+)@.*#\1#p' ~/.config/secrets/gitea | head -1) curl -s -H "Authorization: token $tok" http://192.168.0.143:3000/api/v1/ ``` Common wrong pattern (silent failure): an `awk`/`grep` anchored on `https://` or on `@192.168.0.143:` matches nothing, leaving `tok=""` — verify with `echo "tok len ${#tok}"` before believing any API result. ## The 404 trap `dank/command-center` is **public**: an empty token still returns real issue data. `dank/dankvoice` is **private**: the same empty token returns `404` on `/api/v1/repos//` and `{}`-shaped bodies (`title: undefined`) on issues. A 404 with a zero-length token is an auth problem, NOT a missing repo — confirm by printing the token length first, then re-check. ## Other notes - `git credential fill` fails headless here (`could not read Username … terminal prompts disabled`); read the store file directly instead. - Never print the token: mask when inspecting the file — `sed -E 's#(://[^:]+:)[^@]+@#\1REDACTED@#' ~/.config/secrets/gitea` - Issue/PR numbers are **per repo**: `dank/dankvoice` #8–#11 (refactor, hardening, AbortError fix, menu defects) are unrelated to `dank/command-center` #8–#11 (SDLC, trunk-law). Read the body from the repo the work targets before referencing an issue in a commit message.