What about the ways that claude code checks for whether KAIROS is enabled? well look no further than
- getKairosActive() / STATE.kairosActive / context.getAppState().kairosEnabled
- kairosGate / kairosGate.isKairosEnabled()
- isKairosCronEnabled()
- options.assistant? (and all variants of being passed whatever the caller's interpretation of active is)
- assistantModule.isAssistantMode()
- assistantModule.isAssistantForced()
- isEnvTruthy(process.env.CLAUDE_CODE_PROACTIVE))
- proactiveModule.isProactiveActive() / isProactiveActive_SAFE_TO_CALL_ANYWHERE()
- getAllowedChannels().length > 0
- literally whether some arbitrary chunk of input text has <TICK> in it
these are all orthogonal to each other. I grouped generously. I tried to filter for only the checks that were annotated as being for whether we were doing a kairos/assistant/persistant rather than whether any subfeatures of that are enabled.