Problem statement
The Advanced mode toggle in the user profile is a single binary switch that gates a collection of unrelated features across Home Assistant, from app (add-on) visibility (Terminal & SSH) to configuration options and UI elements. Over the past year, we have been incrementally removing individual Advanced mode gates, but the effort is not yet complete. Several places in the codebase and UI still check for this flag.
This is a problem for two reasons:
- It's a blunt instrument. A user who needs access to one gated feature (e.g., the Terminal & SSH app (add-on)) is forced to enable everything at once. There is no granularity; it's all or nothing. This was the original lesson that started the removal effort: a single toggle does not meaningfully match how users actually need these features.
- It creates a psychological barrier. Labelling features as "advanced" implies a skill threshold. Users may feel they are not qualified to use certain features, or conversely, that they must enable Advanced mode to be taken seriously. Neither framing serves our users well and it can alienate people who would otherwise benefit from specific capabilities.
The removal has been in progress, but without a dedicated push, the remaining instances risk lingering indefinitely. Every release that still ships with Advanced mode gates is another release where new users hit this friction, existing documentation and community guides perpetuate the toggle as a required step, and we accumulate more surface area that depends on it.
This opportunity is a technical bet to complete the effort: audit what remains, remove or replace every remaining gate, and retire the toggle itself.
Scope & Boundaries
In scope
- A full audit of all remaining Advanced mode checks across core, frontend, supervisor, apps (add-ons), and integration configuration flows
- Removing or replacing each gate with a more appropriate pattern (e.g., contextual disclosure, separate per-feature settings, or simply making the feature available by default)
- Removing the Advanced mode toggle from the user profile
- Removing the advanced_mode field from the user model
- Updating official documentation that references Advanced mode
Not in scope
- Designing a full replacement permission or feature-flagging system (that is a separate, larger initiative)
- Reworking the admin/non-admin user distinction
- Changing which features require an administrator account
Foreseen solution
The approach is straightforward since the direction has already been established through prior incremental work:
-
Audit: Grep across all relevant repositories (core, frontend, supervisor, apps (add-ons)) for remaining references to advanced_mode / advancedMode / Advanced mode checks. This includes integration configuration flows, which may conditionally show or hide options based on the toggle. Produce a list of every remaining gate.
-
Per-gate decision: For each remaining gate, decide the appropriate resolution:
- Remove the gate entirely: the feature becomes visible to all admin users by default (expected for most cases)
- Replace with contextual disclosure: e.g., a collapsed section or "show more options" pattern where the feature is available but not prominent
- Move to a different, more appropriate control: if the gate genuinely protects something that not every admin should see by default
-
Remove the toggle: Once all gates are resolved, remove the Advanced mode toggle from the profile page and clean up the underlying data model.
-
Documentation sweep: Update the official docs and any first-party references to remove mentions of the toggle.
Community signals
- Frontend issue #23019: The toggle description is unhelpful and the linked documentation is outdated (pointing to a 2019 blog post), highlighting how this concept has not aged well.
- Community post: "Advanced mode is too hidden": Recurring community frustration that essential features are locked behind a poorly discoverable toggle.
- Numerous community guides and third-party documentation include "Step 1: Enable Advanced mode" as boilerplate, adding unnecessary friction to onboarding for features like Terminal & SSH.
- The 2025.8 release already included a removal of an Advanced mode gate (group all option), showing continued momentum on this effort.
Risks & open questions
- Completeness of the audit: There may be Advanced mode checks in unexpected places (add-on metadata, documentation CI, etc.). The audit needs to be thorough across all repositories.
- Integration configuration flows: Individual integrations may have implemented their own dependency on the Advanced mode toggle to conditionally show or hide configuration options. Given the number of integrations, this is a potentially long tail that needs to be systematically covered.
- App visibility: Some apps (add-ons) (Terminal & SSH, notably) are currently only shown to Advanced mode users. Removing this gate means these add-ons become visible to all admin users; we should confirm this is the desired behavior and does not create confusion for less technical users.
- Community documentation lag: A large body of third-party guides reference Advanced mode. We can only control our own docs, but we should be clear in our changelog to help the ecosystem catch up.
Appetite
Small: roughly 1 cycle of focused work, primarily across frontend and core. The bulk of the effort is the audit and the individual PRs to remove each gate. No major architectural changes are needed.
Execution issues
Decision log
| Date |
Decision |
Outcome |
| March 11, 2026 |
Proposed as betting table candidate to push for completion of the ongoing Advanced mode removal effort |
Pending |
Problem statement
The Advanced mode toggle in the user profile is a single binary switch that gates a collection of unrelated features across Home Assistant, from app (add-on) visibility (Terminal & SSH) to configuration options and UI elements. Over the past year, we have been incrementally removing individual Advanced mode gates, but the effort is not yet complete. Several places in the codebase and UI still check for this flag.
This is a problem for two reasons:
The removal has been in progress, but without a dedicated push, the remaining instances risk lingering indefinitely. Every release that still ships with Advanced mode gates is another release where new users hit this friction, existing documentation and community guides perpetuate the toggle as a required step, and we accumulate more surface area that depends on it.
This opportunity is a technical bet to complete the effort: audit what remains, remove or replace every remaining gate, and retire the toggle itself.
Scope & Boundaries
In scope
Not in scope
Foreseen solution
The approach is straightforward since the direction has already been established through prior incremental work:
Audit: Grep across all relevant repositories (core, frontend, supervisor, apps (add-ons)) for remaining references to
advanced_mode/advancedMode/ Advanced mode checks. This includes integration configuration flows, which may conditionally show or hide options based on the toggle. Produce a list of every remaining gate.Per-gate decision: For each remaining gate, decide the appropriate resolution:
Remove the toggle: Once all gates are resolved, remove the Advanced mode toggle from the profile page and clean up the underlying data model.
Documentation sweep: Update the official docs and any first-party references to remove mentions of the toggle.
Community signals
Risks & open questions
Appetite
Small: roughly 1 cycle of focused work, primarily across frontend and core. The bulk of the effort is the audit and the individual PRs to remove each gate. No major architectural changes are needed.
Execution issues
Decision log