Docs

Inference

How an agent thinks — which provider (Claude or Codex), which model, and whose login pays: one shared login, or each person's own.

Has: a provider · a default model · whose login (shared | per person) · a login state, on the agent when it is shared and on each agent-account when it is per person. An agent has one; losing the agent loses the login with it.

Provider and model

  • An agent thinks through Claude or Codex, chosen on its screen; anything else is refused and nothing is saved.

    INFER-TWO-PROVIDERS
  • Choosing a provider, on the agent's screen or in New agent, shows that provider's models at once. If the current model is not one of them, the provider's default is selected (Claude: Sonnet 5; Codex: GPT-5.6 Sol).

    e.g. New agent, pick Codex → the model list is Codex's, and Sol is selected.

    INFER-MODELS-FOLLOW-PROVIDER
  • An agent is never saved with another provider's model; the API refuses the pair and keeps what was there. A model no longer on offer is shown by its id, marked retired, until changed.

    e.g. a stale form sends Codex + sonnet → refused; the agent keeps its settings.

    e.g. agent on Codex, switch to Claude → the model list becomes Claude's, before saving.

    INFER-MODEL-MATCHES-PROVIDER
  • Claude offers Opus 5, Sonnet 5 and Haiku 4.5; Codex offers GPT-5.6 Sol, Terra and Luna.

    INFER-MODELS-ON-OFFER
  • The model chosen in the Hub is what a new conversation starts on, and a person can switch within that provider's models in the channel.

    INFER-MODEL-IS-DEFAULT

Whose login

  • An agent runs on one shared login or on each person's own, chosen on its screen; anything else is refused.

    INFER-WHOSE-LOGIN
  • A turn on a shared agent runs on the agent's login; a turn on a per-person agent runs on the speaker's own subscription.

    INFER-TURN-PAYS-WHOSE
  • An unattended Skill run on a per-person agent runs on the subscription of the person whose item it is, and otherwise on the agent's login.

    INFER-SCHEDULED-RUN-PAYS

Signing in

  • A person signs an agent in from its own channel with !connect claude or !connect codex, never from the Hub.

    INFER-CONNECT-IN-CHANNEL
  • A login counts as signed in only when the credential really changed and the provider itself agrees; anything else is reported as a failure.

    INFER-LOGIN-IS-OUTCOME-TRUE
  • A login is held with the agent that uses it, and per person on a per-person agent; it never reaches the Hub.

    INFER-LOGIN-STAYS-WITH-AGENT
  • A first Codex login works on an agent, or for a person, that has never had one.

    INFER-FIRST-CODEX-LOGIN
  • A turn runs on the subscription that was signed in, never on a provider API key.

    INFER-SUBSCRIPTION-NOT-KEY
  • !disconnect claude signs out your own login on a per-person agent and the agent's on a shared one; the next message offers a fresh login.

    INFER-SIGN-OUT-IS-YOURS
  • Asked in the channel, an agent names the account it answers on — the speaker's own on a per-person agent.

    INFER-WHOSE-ACCOUNT-SHOWS

When there is no login

  • A person with no login is offered one instead of the agent spending a turn; a shared agent asks in the channel when its own login is not working.

    INFER-NO-LOGIN-NO-TURN
  • A turn that fails for want of a login says exactly that and names what to send for this agent's provider, and the login is marked expired or in error.

    INFER-FAILED-TURN-SAYS-SO
  • After a provider switch, what counts as signed in is each login on the new provider; logins on the old one are kept, untouched, for a switch back. A turn already running finishes on the provider it started with; the next turn uses the new one and starts a fresh session, and a thread's own model choice from the old provider is dropped. A late report from the old provider never changes the new badge.

    e.g. a per-person agent with two Claude logins switched to Codex → "Nobody signed in yet"; switched back → "2 signed in" again, nobody signed in twice.

    e.g. a Claude turn finishes after the switch → Codex still reads "Not signed in".

    INFER-SWITCH-COUNTS-CURRENT
  • Every login badge — card, header, Inference box, Accounts tab — uses the same words: "Signed in", "Not signed in", "Sign-in failed", "Sign-in expired". On a per-person agent it counts the tenant's members only, on the current provider: "2 signed in · 1 failed · 3 not yet", with expired counted as failed. "Connected" is for connections only.

    e.g. nobody yet → "Nobody signed in yet"; one expired, nobody else → "1 failed · 0 signed in"; someone who left the tenant is not counted.

    INFER-ONE-LOGIN-WORDS
  • A per-person agent is never shown as failed on one person's account: it reads as how many people are signed in, failed and not yet. A shared agent shows its one login's state.

    e.g. two people signed in, one failed → "2 signed in · 1 failed", never "Login failed".

    INFER-HONEST-BADGE