/eco-app/discord/token is rejected by Discord with 401, so the eco-app Discord worker has crash-looped 362 times #965
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#965
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Found while checking cluster health after coilyco-bridge/deploy#811. Unrelated to
that incident, and it predates it.
Observed state
coilysiren-eco-app/coilysiren-eco-app-discordreportsREADY 0/1,AVAILABLE 0, on a deployment that is 35 days old.The
discord-workercontainer is inCrashLoopBackOffwith 362 restarts.It runs for about 13 seconds and exits 1:
kubelet has logged 7849
BackOffevents for it.Cause
Discord rejects the bot token:
The failure is on
GET /users/@meduringstatic_login, so it is the tokenitself and not an intent, permission, or guild problem. The two
WARNINGlinesabove it (
Guilds intent seems to be disabled,PyNaCl ... not installed) arenoise and not the failure.
Delivery is not the problem
The ExternalSecret is healthy, so nothing is wrong with the sync path:
refreshTime: 2026-08-27T09:37:09Z, conditionReady=True reason=SecretSynced.It maps four parameters, and the failing one is the first:
ECO_DISCORD_TOKEN<-/eco-app/discord/tokenECO_DISCORD_APPLICATION_ID<-/eco-app/discord/application-idECO_DISCORD_TEST_GUILD_ID<-/eco-app/discord/test-guild-idECO_DISCORD_INFO_CHANNEL_ID<-/eco-app/discord/info-channel-idSo External Secrets is faithfully delivering a value that Discord will not
accept. The stored parameter is stale, revoked, regenerated in the Discord
developer portal, or otherwise wrong. I did not read the value.
What this is not
logic runs. Image is
coilyco-gaming/eco-app:48590dc7d7873f39db2a1ddeac760974c2fff985.ReplicaSet dates to 2026-07-23.
Remediation
Operator work, because it needs the Discord developer portal and a SecureString
write:
Discord developer portal, regenerating if needed.
/eco-app/discord/tokenas a SecureString, without echoing it.restart the deployment.
coilysiren-eco-app-discordreaches1/1and that the restart countstops climbing.
Related
The shape matches #593, a non-empty but unusable value sitting in SSM behind a
healthy ExternalSecret. If that issue's validation-and-rotation path lands, this
parameter is a candidate for the same treatment: a token that logs in cleanly
once at write time is worth more than one that is merely non-empty.
Application context for the worker itself is
coilyco-gaming/eco-app#144.