Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

Description

@eddy-curly

This was generated by AI during triage.

Summary

Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

Motivation / use case

The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

User story

As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

Requirements

Based on the reporter's answers:

  1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
  2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
  3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
  4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
  5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

Open questions (for the feasibility investigation)

Scope notes

  • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
  • Manual switch should always be available as an override, even when automatic failover is enabled.

Proposed breakdown into sub-issues

This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

  1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
  2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
  3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
  4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
  5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
  6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
  7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

Metadata

Metadata

Assignees

Labels

wontfixThis will not be worked on

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

    Description

    @eddy-curly

    This was generated by AI during triage.

    Summary

    Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

    Motivation / use case

    The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

    Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

    User story

    As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

    Requirements

    Based on the reporter's answers:

    1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
    2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
    3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
    4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
    5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

    Open questions (for the feasibility investigation)

    Scope notes

    • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
    • Manual switch should always be available as an override, even when automatic failover is enabled.

    Proposed breakdown into sub-issues

    This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

    1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
    2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
    3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
    4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
    5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
    6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
    7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

    Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

    Metadata

    Metadata

    Assignees

    Labels

    wontfixThis will not be worked on

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

      Description

      @eddy-curly

      This was generated by AI during triage.

      Summary

      Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

      Motivation / use case

      The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

      Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

      User story

      As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

      Requirements

      Based on the reporter's answers:

      1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
      2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
      3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
      4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
      5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

      Open questions (for the feasibility investigation)

      Scope notes

      • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
      • Manual switch should always be available as an override, even when automatic failover is enabled.

      Proposed breakdown into sub-issues

      This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

      1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
      2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
      3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
      4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
      5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
      6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
      7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

      Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

      Metadata

      Metadata

      Assignees

      Labels

      wontfixThis will not be worked on

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

        Description

        @eddy-curly

        This was generated by AI during triage.

        Summary

        Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

        Motivation / use case

        The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

        Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

        User story

        As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

        Requirements

        Based on the reporter's answers:

        1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
        2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
        3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
        4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
        5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

        Open questions (for the feasibility investigation)

        Scope notes

        • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
        • Manual switch should always be available as an override, even when automatic failover is enabled.

        Proposed breakdown into sub-issues

        This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

        1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
        2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
        3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
        4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
        5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
        6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
        7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

        Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

        Metadata

        Metadata

        Assignees

        Labels

        wontfixThis will not be worked on

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

          Description

          @eddy-curly

          This was generated by AI during triage.

          Summary

          Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

          Motivation / use case

          The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

          Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

          User story

          As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

          Requirements

          Based on the reporter's answers:

          1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
          2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
          3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
          4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
          5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

          Open questions (for the feasibility investigation)

          Scope notes

          • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
          • Manual switch should always be available as an override, even when automatic failover is enabled.

          Proposed breakdown into sub-issues

          This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

          1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
          2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
          3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
          4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
          5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
          6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
          7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

          Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

          Metadata

          Metadata

          Assignees

          Labels

          wontfixThis will not be worked on

          Projects

          No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

            Description

            @eddy-curly

            This was generated by AI during triage.

            Summary

            Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

            Motivation / use case

            The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

            Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

            User story

            As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

            Requirements

            Based on the reporter's answers:

            1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
            2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
            3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
            4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
            5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

            Open questions (for the feasibility investigation)

            Scope notes

            • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
            • Manual switch should always be available as an override, even when automatic failover is enabled.

            Proposed breakdown into sub-issues

            This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

            1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
            2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
            3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
            4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
            5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
            6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
            7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

            Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

            Metadata

            Metadata

            Assignees

            Labels

            wontfixThis will not be worked on

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

              Description

              @eddy-curly

              This was generated by AI during triage.

              Summary

              Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

              Motivation / use case

              The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

              Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

              User story

              As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

              Requirements

              Based on the reporter's answers:

              1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
              2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
              3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
              4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
              5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

              Open questions (for the feasibility investigation)

              Scope notes

              • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
              • Manual switch should always be available as an override, even when automatic failover is enabled.

              Proposed breakdown into sub-issues

              This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

              1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
              2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
              3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
              4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
              5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
              6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
              7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

              Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

              Metadata

              Metadata

              Assignees

              Labels

              wontfixThis will not be worked on

              Projects

              No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                Support multiple Claude Code accounts with manual + automatic (on-limit) switching #30

                Description

                @eddy-curly

                This was generated by AI during triage.

                Summary

                Add support for configuring multiple Claude Code accounts in the app and switching between them, so a user with more than one subscription can keep working when one account hits its usage limit.

                Motivation / use case

                The reporter has two Claude Code Max plan subscriptions and wants to use both with this application. When one account hits its usage limit, they want to fall back to the other instead of being blocked until the limit resets. Today this presumably requires manually re-authenticating with the other account, which is disruptive.

                Note: This issue captures the desired behaviour only. Feasibility and the implementation approach have not been investigated yet — a follow-up investigation against the codebase is expected before this is picked up for build. Please do not treat the requirements below as an approved design.

                User story

                As a user with multiple Claude Code accounts, I want the app to hold more than one account and switch between them — automatically when I hit a limit, or manually on demand — so I can keep working without re-authenticating each time.

                Requirements

                Based on the reporter's answers:

                1. Multiple accounts stored simultaneously — the app should keep more than one Claude Code account authenticated/saved at the same time. Switching should be instant, with no re-login.
                2. Manual switching — the user can explicitly choose which account is active (e.g. a toggle/dropdown in the UI).
                3. Automatic failover — when the active account hits its usage/rate limit, the app should automatically switch to another available account.
                4. Per-account usage visibility — surface each account's status in the UI (which account is active, and remaining usage / limit state where available) so the user can see where they stand before hitting a wall.
                5. General feature — build this as a reusable feature that any user could use to configure and switch between multiple accounts, not a one-off personal hack.

                Open questions (for the feasibility investigation)

                Scope notes

                • Automatic switching should not silently lose in-flight work — behaviour on failover mid-request needs to be defined during design.
                • Manual switch should always be available as an override, even when automatic failover is enabled.

                Proposed breakdown into sub-issues

                This is large enough to act as a parent/epic. The work splits into smaller, independently-shippable slices (rough dependency order — each can become its own linked sub-issue):

                1. Multi-account credential storage (foundation) — persist and hold more than one Claude Code account's credentials at once; add / remove / list configured accounts. Blocks everything below.
                2. Manual account switcher — UI to pick the active account (toggle/dropdown) with instant, no-re-login switching. Depends on t3x: auto-build & install the desktop app on change #1.
                3. Per-account usage/limit display — show each account's status: which one is active, plus remaining usage / limit state where the data is available. (The reporter's example.) Depends on t3x: auto-build & install the desktop app on change #1.
                4. Limit-hit detection — reliably identify when the active account has hit its usage/rate limit (pin down the signal: error type / status code / message). Foundation for failover; also feeds fix(t3x): auto-build defects found running the LaunchAgent for real #3.
                5. Automatic failover on limit — when a limit is detected, switch to the next available account automatically. Depends on t3x: auto-build & install the desktop app on change #1 and [Bug]: Azure DevOps source control shows "not available" on Windows because the 5s CLI probe times out on slow az --version (misclassified as missing) #4.
                6. Failover policy / account precedence — configure fallback order (ordered priority, round-robin, or least-recently-limited). Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.
                7. In-flight request handling on failover — retry/resume the interrupted request on the new account without losing work. Depends on Ungraceful backend exit leaves in-flight turns frozen as running → surface as cancelled; auto-resume doesn't recover them #5.

                Minimal first vertical slice: #1 + #2 (store two accounts and switch manually) delivers value on its own; automatic failover (#4#7) and usage visibility (#3) can follow.

                Metadata

                Metadata

                Assignees

                Labels

                wontfixThis will not be worked on

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions