Skip to content

[FEATURE] Allow disabling account notifications that obscure code output #203

Description

@aic0d3r

Feature Description

Add a supported way to disable the floating account-selection notification shown by the main auth plugin, for example:

Using Account 2 (Personal ... email ..., id: ...) (2/2)

The notification is rendered over the output rather than reserving layout space. During large code diffs it covers several lines of code, making that portion of the response unreadable until the notification disappears.

There is currently no option to disable this notification. The main plugin calls client.tui.showToast() after selecting an account (dist/index.js, around the Using ${accountLabel} message). Existing settings only control its duration and debounce:

  • CODEX_AUTH_TOAST_DURATION_MS has a minimum of 1000 ms and cannot disable toasts.
  • CODEX_AUTH_RATE_LIMIT_TOAST_DEBOUNCE_MS suppresses repeated notifications for the same account, but the first notification and account changes still appear.
  • Removing oc-codex-multi-auth@latest from tui.json does not help because this toast comes from the main auth plugin in opencode.json, not the optional TUI quota-status plugin.

Use Case

Code output and diffs must remain readable while accounts rotate or switch. A transient account notification should not obscure the content users are reviewing, especially when a diff is paused on screen or the terminal is narrow.

Users who can inspect account state with codex-status, codex-list, codex-limits, or codex-dashboard may also prefer not to display account-selection notifications at all.

Proposed Implementation

Add a durable opt-out such as CODEX_AUTH_ACCOUNT_TOASTS=0 (or a config equivalent such as accountToasts: false) that gates only this informational account-selection toast:

if (accountToastsEnabled && accountCount > 1 &&
    accountManager.shouldShowAccountToast(account.index, rateLimitToastDebounceMs)) {
  // existing account toast
}

Warnings and errors for rate limits, expired authentication, recovery, unsupported models, and retries should remain visible. Ideally, the installer should preserve the setting across upgrades.

As a separate layout improvement, OpenCode notifications could reserve space instead of overlaying output, but an explicit plugin-level off switch would still be useful.

Compliance Consideration

  • This feature is for personal development use
  • This feature does not violate or circumvent OpenAI's Terms of Service
  • This feature is not intended for commercial resale or multi-user access

Alternatives Considered

  • Remove the plugin from tui.json: ineffective; this notification is emitted by the main auth plugin.
  • Set the minimum toast duration: still obscures code for one second and affects other useful notifications.
  • Increase the debounce: does not suppress the first toast or notifications when the selected account changes.
  • Suppress matching Using ... (N/N) calls locally: works, but requires a custom pre-plugin and should not be necessary for a common display preference.

Additional Context

  • Plugin version: 6.9.1
  • Source in 6.9.1: the account-selection branch calls showToast(\Using ${accountLabel} (${account.index + 1}/${accountCount})`, "info")indist/index.js`.
  • Observed during account rotation while reviewing multi-file code diffs.
  • The notification occupied roughly half the terminal width and covered multiple code lines in the captured example.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions