Part I · Product guidePersonalize and operate
Chapter 12source checked

Personalize, measure usage, update, and protect privacy

Tune appearance, motion, and keybindings; understand usage estimates and pooled limits; update clients and servers safely; and control product telemetry.

What this chapter resolves
  • Personalize each client without confusing device-local and environment-shared settings.
  • Read estimated costs and provider limits accurately across environments.
  • Update a client/server pair with minimal disruption and make an informed telemetry choice.

T3 Code spans clients and environments, so settings do not all live in one place. Appearance is usually device-local, keybindings belong to an environment, model price overrides are shared by clients of their target environments, and updates may need action on a different machine from the one in your hands.

Where operational preferences take effectDiagram loading

Zoom with the controls, +/−, or Ctrl/⌘ + trackpad scroll. Enable Pan to drag, use two-finger scrolling, or use the arrow keys. 0 fits the diagram; Esc leaves Pan or expanded view.

Where operational preferences take effect

Make the interface comfortable for long sessions

Open Settings → Appearance to choose a theme and system, light, or dark mode. You can select separate theme variants for light and dark. Preferences are stored per device or browser. Mobile has its own theme plus text, code, and terminal preferences; Android 12+ can use wallpaper-driven Material You, and Material You Layout changes spacing and shape separately from color.

Panels open immediately by default. Raise Panel animations from 0 up to 400 ms to add motion. The OS reduced-motion setting overrides animation, and switching threads restores that thread’s panel state without replaying transitions.

Web and desktop can create a palette or import T3 Code and VS Code themes. Export JSON to share it. An environment can publish themes and set a default with t3 theme set <id>; connected clients apply that command once and can choose another theme later. t3 theme clear removes the default without changing current clients. Keep a published theme filename stable, write updates atomically, and avoid reserved IDs. Environment-published themes come only from the server serving the web app or the desktop app’s main local environment; app.t3.codes and additional connections do not supply them. Duplicate makes an editable independent copy, and a custom theme with the same ID wins. If a selected published theme disappears, the client returns to the standard theme. See the appearance guide.

Build a keyboard layer around your habits

Use Settings → Keybindings on web and desktop to inspect command IDs, defaults, and conflicts. The environment stores rules in ~/.t3/userdata/keybindings.json:

[
  { "key": "mod+g", "command": "terminal.toggle" },
  { "key": "mod+shift+g", "command": "terminal.new", "when": "terminalFocus" }
]

mod means Command on macOS and Control elsewhere. Conditions include terminalFocus, terminalOpen, previewFocus, previewOpen, and modelPickerOpen, with !, &&, ||, and parentheses. The last matching rule wins, so put a specific rule after a general one. Preserve !terminalFocus on global bindings that should not steal shell input. Project scripts use script.{id}.run.

Assign thread.stop yourself if you want a dedicated interrupt key. In desktop, mod+w closes the focused terminal or right-panel tab before the window; in a web browser it closes the browser tab, so choose another binding. The palette retains focus while open and returns it to the composer when closed. Full syntax and quit behavior are in the keybinding guide.

T3 Code creates the keybinding file with defaults and adds later defaults without overwriting your custom commands. Invalid rules are ignored; an unreadable JSON document falls back to defaults. chat.new can ask for a project, while chat.newLocal uses the current one. While the palette or model picker is open, number shortcuts select its entries, and model shortcuts also work in Settings. A terminal becoming ready does not steal focus from a composer you returned to.

Desktop quit uses Hold by default: hold Cmd/Ctrl+Q for 1.2 seconds or press it twice within 500 ms. If keyboard repeat is disabled, use two presses. Settings can change this to one Direct press or Double press only; the app menu quits immediately.

Read Usage as evidence, not an invoice

Usage combines available Codex, Claude Code, and Grok Build session history across selected environments. It reports tokens, cache savings, model breakdowns, and estimated API-equivalent cost. The estimate is not a subscription bill, and totals can omit history the server does not have. Filter environments to locate a machine or refresh when recent sessions or model prices are missing. Grok turns without a saved completed-turn record are absent from totals.

From the environment dropdown, Model prices lets you override exact model IDs and USD rates per million tokens. Optional cache rates fall back to input price; 0 means free. Target one or several environments. Each destination reports success; offline destinations are not queued after the dialog closes, so reconnect and use Retry failed saves. In a mixed multi-environment table, untouched cells keep each environment’s existing rate.

Usage → Limits pools provider-reported subscription accounts, deduplicates the same account across environments and hubs, and shows windows, resets, and reset credits where available. Account columns stay aligned across windows; a gap means that account does not report the window, and a hatched segment shows what the next reset restores. Codex accounts with banked reset credits expose Use reset from their account details. API key and proxied accounts may expose no subscription limit. /usage-limits opens the current cached snapshot above the composer; it does not run the agent or refresh. For pooled CLIProxyAPI accounts, add a hub under Settings → Providers → Usage providers. No plugin is required. This connection reports usage but does not route provider requests.

Update the machine named in the notice

Client and server can be on different versions and machines. When a notice appears, identify the environment named by it and finish active agents and terminal commands: server updates restart the connection. Projects, threads, settings, and files remain.

Choose the correct T3 Code update actionDiagram loading

Zoom with the controls, +/−, or Ctrl/⌘ + trackpad scroll. Enable Pan to drag, use two-finger scrolling, or use the arrow keys. 0 fits the diagram; Esc leaves Pan or expanded view.

Choose the correct T3 Code update action

Enable Settings → General → Continue threads after restarts when you want supported active threads to resume after an update, crash, or reboot. Apply it to all connected environments after older servers update. It does not enable startup, terminals can still be interrupted, and sessions without provider resume state need a new message.

Keep the client open while a remote update installs and reconnects. Update server can update a supported background service; for a desktop-hosted server it also closes and relaunches the desktop app on that host. A failed service update can roll back to its previous version. If recovery still fails, retry once, confirm you updated the named host, then relaunch a command-line server at the exact client version. Older servers may need one local update before remote update, rollback, or shared continuation settings are available.

For a service, use npx t3@<client-version> service update; @latest helps only when the client is on latest. For a foreground host, relaunch the copied exact version and preserve serve, --host, or --tailscale-serve. Mobile store releases install normally; background app updates preserve drafts and queued messages and apply when you leave, or ask after a long foreground session. Follow the pinned updating guide.

Privacy and product telemetry

The server sends PostHog product events tied to a hashed account or installation ID. Events can include provider, model, reasoning effort, permission mode, result, duration, and main-agent token totals. They exclude prompts, responses, file contents, authentication tokens, conversation IDs, raw provider events, and child agent output; child token usage is excluded from totals.

Disable collection by setting T3CODE_TELEMETRY_ENABLED=false in the server’s environment before startup. Restart the server so the value takes effect. This stops product events from being recorded or sent. See the product-usage-data guide.

T3
Source-locked editionRead against 859304b78 · 10 Sept 2026
Book search

Find a concept, module, or source path

Type two or more characters.