Upgrade 2026.5.7 → 2026.8.2 fails: InconsistentMigrationHistory — authentik_core.0064_..._idx applied before its 2026.8 dependency authentik_core.0063_actor / authentik_rbac.0011
Describe the bug
Upgrading from 2026.5.7 to 2026.8.2 (docker compose) puts the server
container into a permanent crash loop. Django's migration consistency check
fails before any migration is applied:
django.db.migrations.exceptions.InconsistentMigrationHistory:
Migration authentik_core.0064_user_authentik_c_usernam_2f0e4b_idx is applied
before its dependency authentik_core.0063_actor on database 'default'.(also seen against authentik_rbac.0011_initialpermissionspermission.)
The Rust server wrapper then reports the backend gone and the container restarts,
looping indefinitely (RestartCount climbed to 16 in ~1 minute):
{"filename":"src/server/mod.rs","level":"warn",...,"code":"ExitStatus(unix_wait_status(256))","event":"server has exited"}
{"filename":"src/main.rs","level":"error",...,"event":"authentik encountered errors"} the server has exited unexpectedlyRoot cause (analysis)
The 2026.5 and 2026.8 migration branches appear to have diverged:
authentik_core.0064_user_authentik_c_usernam_2f0e4b_idxshipped in the 2026.5 line and is applied in our DB (applied during the 2026.5.7 upgrade).authentik_core.0063_actorandauthentik_rbac.0011_initialpermissionspermissionare 2026.8-only migrations, not present in the 2026.5 graph, so they are not applied in a DB coming from 2026.5.x.- In 2026.8,
0064_..._idxdepends on0063_actor— a migration numbered lower than one already applied from the 2026.5 branch. Django'scheck_consistent_historytherefore fails ("0064 applied before its dependency 0063").
i.e. a released 2026.5 migration effectively gains a back-dependency on a
newly-inserted, lower-numbered 2026.8 migration. --fake-applying 0063_actor
is not a safe workaround because it is a real schema change (creates the actor
table).
Migration history from the affected DB:
app | name | applied
----------------+------------------------------------------+---------------------------
authentik_rbac | 0010_remove_role_group_alter_role_name | 2026-03-14 12:28:25+00
authentik_core | 0064_user_authentik_c_usernam_2f0e4b_idx | 2026-09-10 00:20:07+00 (from 2026.5.7)
(authentik_core.0063_actor and authentik_rbac.0011 are NOT applied — 2026.8-only)To reproduce
- Run 2026.5.7 (a DB that has
authentik_core.0064_..._idxapplied but not0063_actor). - Upgrade to 2026.8.2 (bump image tags,
docker compose pull && up -d). servercrash-loops on theInconsistentMigrationHistoryabove.
Expected behavior
The 2026.5.7 → 2026.8.2 upgrade migrates cleanly. The 2026.8 migration graph should not make an already-released 2026.5 migration depend on a newly-inserted, lower-numbered migration (a merge migration or corrected dependency is likely needed).
Version and Deployment
- authentik 2026.5.7 → 2026.8.2 (fails)
- Deployment: docker-compose
- PostgreSQL 16-alpine; Python 3.14 (per traceback path)
- Upgrade history reaching 2026.5.7: 2025.10.2 → 2025.10.4 → 2025.12.4 → 2026.2.1 → 2026.2.2 → 2026.2.3 → 2026.2.4 → 2026.2.6 → 2026.5.6 → 2026.5.7
Workaround used
Reverted the image tag to 2026.5.7 and restarted. Because the failure is in the migration planning/consistency phase (before anything is applied), the DB is untouched and 2026.5.7 comes back cleanly with no DB restore needed.
Source: goauthentik/authentik