Commit Graph
5 Commits
Author SHA1 Message Date
Nirav PatelandClaude Fable 5 74d206cb4a docs: identity-binding rules + promotion-window hardening checklist
Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-19 09:18:54 -04:00
Nirav PatelandClaude Fable 5 c674db4746 security: harden granthi-link + client against 7 codex findings
1. CRITICAL account-takeover by login collision: persist zitadel_sub ->
   gitea_login identity map (state.json, 0600, atomic); mapping wins,
   deleted logins re-created only if service-created, existing unmapped
   logins bind only on verified email match, else 409; token never
   minted before binding passes
2. test_mode now gated behind GRANTHI_LINK_ALLOW_TEST_MODE=1 env
3. refuse startup unless config.json is 0600/0400 and owned by service
4. client config created O_CREAT 0600 (no write-then-chmod window)
5. credential-helper command paths shlex-quoted
6. POST bodies capped at 64KB (413); missing/invalid Content-Length rejected
7. Gitea 409 on user create handled idempotently (re-fetch + verify email)

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-19 09:17:26 -04:00
Nirav PatelandClaude Fable 5 1c8fcb23d8 docs: review-service live check marker
Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-19 09:14:30 -04:00
Nirav PatelandClaude Fable 5 16d6a30c04 fix: send explicit User-Agent (Cloudflare 403s default Python-urllib UA at id.shre.ai)
Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-19 00:11:38 -04:00
Nirav PatelandClaude Fable 5 2077591755 granthi-sync v1: granthi-link provisioning service + client daemon + tests
Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-19 00:09:19 -04:00