What about the ways that claude code checks for whether KAIROS is enabled? well look no further than<li>getKairosActive() / <code>STATE.kairosActive</code> / <code>context.getAppState().kairosEnabled</code></li><li><code>kairosGate</code> / <code>kairosGate.isKairosEnabled()</code></li><li><code>isKairosCronEnabled()</code></li><li><code>options.assistant?</code> (and all variants of being passed whatever the caller's interpretation of active is)</li><li><code>assistantModule.isAssistantMode()</code></li><li><code>assistantModule.isAssistantForced()</code></li><li><code>isEnvTruthy(process.env.CLAUDE_CODE_PROACTIVE))</code></li><li><code>proactiveModule.isProactiveActive()</code> / <code>isProactiveActive_SAFE_TO_CALL_ANYWHERE()</code></li><li><code>getAllowedChannels().length > 0</code></li><li><em>literally whether some arbitrary chunk of input text has <code><TICK></code> in it</em></li>
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.