---
title: "Selan changelog: what shipped, day by day · Selan"
description: "What changed in Selan for the teams that use it, one dated entry per day, newest first: new features, changed defaults, new commands and fixes."
url: https://selan.ai/changelog
updated: 2026-10-14T20:59:27+03:00
---

Changelog

# What changed in Selan?

What changed for the people using Selan, one entry for each day it shipped, newest first. An entry says what changed on its day; [the docs](https://selan.ai/docs) say how Selan works now. The same entries are in [rss.xml](https://selan.ai/rss.xml).

October 2026

## One Slack app, and replies that wake agents

13 October 2026

-   Selan is now one [Slack app](https://selan.ai/slack) that a company installs with Add to Slack. A company can still use its own Slack app, and owners are walked through creating it from a manifest. The Slack connector is now the bot alone.
-   A reply under an agent's post wakes the agent that wrote it, or starts a fresh run. Agents can find users and channels and DM a person by id. Uninstalling the app removes the company's Slack from Selan.
-   Firebase is now Firebase's own MCP server, with 38 tools across Remote Config, Firestore, Auth, Messaging, Functions, Crashlytics, App Hosting, Realtime Database and Storage. New connectors: Google Analytics, Google Search Console and the whole Cloudflare API.
-   `selan` now gives every Google Cloud and Analytics connector the right sign-in metadata, so none needs a fresh sign-in after an hour. A connector sign-in link opened while signed in to another company now offers Switch account.

## New connectors, a public Browser Extension and cache fixes

12 October 2026

-   New connectors: a company Slack bot that posts and reads as the company's bot, Firebase Remote Config, and Hostinger. GitHub now connects through Selan, so agents can fork and open a pull request where they cannot push, and create releases.
-   The [Browser Extension](https://selan.ai/docs/browser-extension) is public on the Chrome Web Store, and its connector links to it.
-   Selan no longer re-encodes PNG screenshots as WebP, because an image that changed form between turns broke Claude's prompt cache from that image onward. Auxiliary calls now ask for a five-minute cache, not an hour.
-   A message sent to a remote agent run as it finishes is now answered or refused, never lost. Reactor's per-run tokens no longer count toward a company's live-token cap.

## More API tokens, GitHub webhooks and four-hour agent runs

11 October 2026

-   A company may hold 50 live API tokens, up from 20. An owner can also create one from an MCP client with `selan_cli_token_create`. The secret is returned once, in the tool's answer.
-   GitHub webhooks, signed with HMAC-SHA256, can now start agents. A remote agent run may take four hours, up from two.
-   Background helpers are no longer killed when a turn ends. A run cut off mid-turn now has a cost, and resumed runs are no longer priced at several times their tokens.
-   The Google OAuth setup now asks owners for a Web application client, with Reactor's callback listed, instead of a Desktop app client. Codex now reaches Gemini only over Vertex.

## Agents can run on several destinations, with fewer refused starts

10 October 2026

-   An agent can now run on any of several destinations: runners in order, a Selan Isolated VM, or both. Each run goes to the first one that is free. A workspace's supervisor stays on the VM.
-   Schedules need no per-company setup, so a new company's schedules fire without it. Model names replace ids on Reactor's pages.
-   When quota is full, Selan asks every zone again, gives placing 95 seconds, and says why a start was refused, so Reactor can queue the run. A run its runner dropped at the deadline now reads timed out, not lost.
-   A response the provider cuts off mid-stream now ends as aborted for the client instead of looking complete. An altered thinking block in the latest turn is repaired instead of failing with a `400`.

## Longer-lived sign-ins for Google connectors and Selan MCP

9 October 2026

-   Google connectors in Claude Code keep their sign-in past the hour. The CLI now points Claude Code at sign-in metadata that adds `access_type=offline` and `prompt=consent`, so Google issues a refresh token. Each developer signs in once more.
-   A Selan MCP connection now gets rotating OAuth 2.1 refresh tokens, bound to the client. Before, its access token expired after 30 days with no renewal.
-   A call that stalled inside Selan used to end in `503` errors for clients. Each attempt now times out at 10 seconds and is retried once. Token counting on Ollama and OpenRouter is answered locally instead of returning `404`.
-   A remote agent run moves to the second zone at once when quota refuses the first, and placing gets 75 seconds. The identity menu now names the company.

## Hour-cache fix, cache breakpoints and Claude Haiku 5.5

8 October 2026

-   A person's conversation now always gets the one-hour cache, and a `/loop` turn counts as the person's. Automation's idle check ignores its own subagents, because they do not keep the parent's cache entry warm.
-   A request body with no cache breakpoint now gets one on its last block when its key was active within the hour. A body that carries its own markers is left unchanged.
-   Claude Haiku 5.5 takes the `haiku` tier, with a 1M context window and the same switches as Haiku 4.5. Claude Desktop requests for Haiku, which failed at first, now work. ChatGPT's three Pro tiers and Ollama's flat Team plan are priced correctly.
-   A GitLab connection no longer lapses when GitLab briefly refuses a token it has just issued.

## Tool search on by default, and one hour-cache rule

7 October 2026

-   Claude Code's MCP tool search is now on for remote agent runs and for `selan claude`, so tool definitions load only when a session uses them. A `tool-search` switch controls it and defaults on.
-   The one-hour cache now depends on who is asking. A person gets an hour from their first request, a subagent or workflow gets five minutes, and automation gets an hour only after a pause of 5 to 60 minutes. The per-member switch is removed.
-   Codex's prompt cache is now keyed by session instead of being shared across all of a machine's conversations.
-   Runners install from one line on Linux, on a Mac, or on a Mac privileged for Xcode, and `--mac-host` gives runs a standard user on the Mac itself. A supervisor can manage its agents' environment variables, never the company layer.

## Workspace rules and Apple Silicon runners for remote agents

6 October 2026

-   A workspace can now have rules: one text that every run in it reads before its own prompt. The tool agents use to read a run's transcript returns plain text instead of raw stream-json.
-   The self-hosted runner now runs on Apple Silicon. A run's git credential is no longer lost when one request is refused: Selan renews it and retries once. A new `delete_branch` tool refuses default and protected branches.
-   A session now stays on the seat holding its largest current prompt, so a small side call no longer moves it to a cold cache. Usage lists each agent once, not once per run. Vertex no longer refuses Claude Code's `thinking.display`.
-   With Reactor on, the CLI installs a Selan remote agents plugin marketplace by default. An owner's opt-out still wins.

## A workspace supervisor and event triggers for remote agents

5 October 2026

-   A workspace can have one supervisor, an agent that reads the runs in its workspace, edits the other agents' prompts, models and schedules, and creates and deletes agents. It acts as the person who turned it on, and a person's own change takes control back.
-   Every agent and schedule change is now a version, with History and Revert. A test run can carry its own model and effort.
-   Agents can be started by an outside event described in one sentence, with GitLab first. Each company gets one webhook URL with a secret shown once, and Rotate or New URL. Events from GitLab groups that are not allowed are dropped.
-   A Codex overload no longer moves a company's Claude traffic off its seats. On control.selan.ai, the primary button is darker so white text on it meets AA contrast, and a long team name no longer overlaps the next column in Members.

## Self-hosted runners and workspaces for remote agents

4 October 2026

-   Remote agents can run on a self-hosted runner, a machine your company keeps on, which starts runs in seconds instead of booting a VM. It installs from one pasted line, and an owner sets its slots from 1 to 16.
-   Agents are split into workspaces. Each workspace is its own canvas. An agent is in exactly one, and starts only agents in its own workspace. Moving an agent clears its start links both ways.
-   A start now waits for Google's answer and tries a second zone, so a run no longer sticks in provisioning. Monitoring is charged to the company's own project once a check proves the agent may charge it, so existing agents with Monitoring need re-granting.

## A Postgres connector for remote agents, and a zoomable canvas

3 October 2026

-   A new Postgres connector replaces the Cloud SQL connector for remote agents. A person signs in with Google, picks an instance and types a database login once. Reactor keeps it sealed and runs the queries itself, so the password never reaches the VM.
-   Runs reach the database only through Reactor's own MCP server, with `list_databases` and `query`. Each call takes one statement, with a 30 second timeout, a limit of 500 rows or 200 KB, and a per-run quota.
-   The remote agents canvas pans and zooms: drag, wheel or pinch. Schedules wire in from each agent's left, and cards are tinted by how the last run ended.

## Agent memory and write-only environment variables

1 October 2026

-   Remote agents now keep a memory across runs. It is on for every run, and a company cannot turn it off. Memory files open formatted, with a Raw view for the exact contents.
-   Owners can set environment variables for a company and editors for one agent, merged per run with the agent's value winning. Values are write-only: once saved, they are never shown again. Names the runner uses, such as `PATH` and `HOME`, are refused.
-   Agents can carry tags, and the canvas filters by them. Deleting an agent now asks first and keeps it for a week, with a Restore that resumes the schedules its deletion paused.
-   Observability, Cloud Run, BigQuery and Cloud SQL are each their own Google Cloud connector row again, granted and checked separately, with Auto or Manual setup. A run that times out or is lost now ends properly instead of staying marked as running.

September 2026

## Message a running agent, and let agents start agents

30 September 2026

-   An editor can now send a message to a remote agent while it works, from the run dialog or over Selan MCP. Up to 20 messages queue, each appears in the transcript, and a run that has ended refuses them.
-   A trigger has a new From agents tab listing which agents may start it. A running agent can start a listed agent and wait for its answer. An unlisted agent is refused with `403`, and one already in the chain with `409`.
-   Remote agent runs now come with docker, Chromium and PostgreSQL 18. Each run also records its cost and tokens: the canvas shows the past week, and a spend dialog breaks it down by day and agent.
-   GPT-6.1 Sol replaces GPT-6 Sol and keeps its switches. Claude Sonnet 5 is no longer switched on for new companies, and stays available by name.

## Long answers are no longer cut off, and Sonnet 5.5 arrives

29 September 2026

-   Streamed answers that ran past five minutes were cut mid-answer. The limit is now 15 minutes, a lease lasts 16 minutes instead of 5, and a non-streaming completion may wait up to 420 seconds for its first byte, up from 140.
-   Claude Sonnet 5.5, at $2 input and $10 output per Mtok with a 1M context, joins Sonnet 5 and takes the `sonnet` tier. Both subagent rules now move Opus and Fable subagents to it, and the CLI's `sonnet` alias resolves to it.
-   The hour cache's `auto` mode now switches on only where the five-minute entry is already dead: the first request ten or more minutes after a key's last. It no longer switches on at a key's third unread rewrite.
-   A Claude account whose owner signed out is retired, and whoever linked it gets an email, as for a ChatGPT account. Logs' Failed and Retried filters now find failures on very busy days.

## Selan MCP can manage Reactor, and prices now carry history

28 September 2026

-   [Selan MCP](https://selan.ai/docs/mcp) can manage Reactor with forty tools for agents, runs, triggers, Google Cloud access and connectors. A read member sees read tools only, deletes are owner-only, and a run's own tokens are refused. It is off by default for each company.
-   Remote agents can query Cloud SQL with one access level per agent: read, write, custom or full, and only an owner may give more than read. A run now gets two hours, up from one, and installs the company's plugins before it starts.
-   Each model now carries a dated price list, so a past period keeps the price it had, and seat prices are dated too. Embeddings through an OpenAI key, which recorded no cost, are now priced.
-   The 25 September hour-cache rule for cold sessions is withdrawn, because it cost more than it saved. A stream that opens with an error is now answered with its status instead of an empty 200, which Claude Code does not retry.

## A practices plugin on every CLI, and a Model pickers screen

27 September 2026

-   Selan offers a Claude Code plugin, Selan practices, and the CLI installs it by default with no owner switch. Its `context-audit`, `skill-audit` and `quality-gates` commands read your transcripts locally and propose changes. Your transcripts never leave your machine. See [practices](https://selan.ai/docs/practices).
-   A new Model pickers screen sets which models each client shows. Claude Code, Claude Desktop and Codex each have a picker with one row per model, and every switched-on model starts in all three. An empty Codex picker lets Codex use its own list.
-   Reactor reaches Google Cloud as a service account per agent, replacing a sign-in that expired after sixteen hours. A person grants it a viewer role on a project, and Reactor checks the account's permissions before the dialog closes.
-   The Secrets screen's bars and legend now count requests, like its table, instead of a different unit. The Usage page loads faster for large companies, and Calls per prompt opens its chart.

## A model must be switched on to be used, and Logs gains Databases

26 September 2026

-   A model is reachable only if Selan lists it and the company switched it on at that provider, on every path that names one. Ids outside the list, such as `claude-fable-5`, are refused. The CLI builds Claude Code's `/model` list from the switched-on models.
-   Logs has a Databases tab listing every agent tool call that reached a database: who made it, which host, by which route and whether it connected. It records the engine and host only, never a command, query or credential.
-   The secret scanner no longer refuses a request. If a secret survives redaction, it redacts more, down to the whole body. Redaction no longer breaks the prompt cache once per conversation.
-   Codex can run on Ollama models over Ollama's own Responses API. GitLab becomes an OAuth connector that Claude Desktop, Claude Code and Reactor sign in to themselves. Opus 5.5 fast mode is no longer priced at half its published rate.

## Subagents move by task type, and Models offers a fixed list

25 September 2026

-   A general-purpose, custom or workflow subagent asked of Opus or Fable now goes to Sonnet 5 when the classifier is at least 0.8 sure its task suits Sonnet. The first turn waits at most a second, and a failed classification leaves the model as asked.
-   Models now offers only what Selan lists: Add a model is gone, and any model outside the list is refused. Selan switches on only models marked on by default, and Opus 5 is hidden. A retired model reads as replaced or retired.
-   GitLab is now a connector. People sign in from Connections and agents from Reactor's Connectors dialog, and a remote run can clone and push to private repositories. An expired connector sign-in offers Sign in again.
-   A session keeps its credential across providers, so a Claude turn in a mixed Claude and GPT session keeps its prompt cache. A signed-out Claude account can be reconnected from its token modal.

## Explore subagents can move to Sonnet, and Sonnet 5 is repriced

24 September 2026

-   When a company switches it on, Claude Code's Explore subagent asked of Opus or Fable runs on Sonnet 5. A rule only ever moves a request down. Logs gains an Agent column and shows what a rewrite saved.
-   Sonnet 5 was costed 50% too high from 1 September, because its launch price was taken to lapse. It is now priced at the launch rate Anthropic made standard. Costs already recorded are not repriced.
-   Remote agents gain an effort setting passed to Claude Code, are told their own name and run, and can read their company through Selan MCP with their run's credential.
-   Logs has a Retried status for requests where an earlier attempt failed and the last succeeded. A scan that stalls mid-transfer is retried once, and a Claude refusal reaches Codex as incomplete, not completed.

## selan codex works on Claude models, and the picker lists GPT-6

23 September 2026

-   `selan codex` on a Claude model now works. Every attempt since 10 September was answered as a rate limit that was not one. Opus 5, Sonnet 5 and Haiku 4.5 now answer, and a session can call tools.
-   The Codex picker lists GPT-6 and offers each model's own effort levels, and it loads again on Codex 0.156, which had stopped fetching it. A long Codex session is no longer refused at 10 MiB: the limit is now 24 MiB.
-   Requests that fall to Vertex no longer fail on the two new fields Claude Code sends. Usage's subscription tile prices Claude Team and ChatGPT Business seats it had counted at zero.
-   A schedule can start a remote agent's run. A remote agent's Google connector sign-in no longer lapses after an hour, and Selan MCP can read a company's remote agents.

## Opus 5.5 is routed, and context editing stops rewriting the cache

22 September 2026

-   Opus 5.5 is routed on an Anthropic seat, an Anthropic API key and Vertex, and Opus 4.8 can now be leased by name. A new model inherits its predecessor's switch, unless an owner switched it off.
-   Context editing now clears only when it clears enough to pay back, so it stops rewriting the prompt cache on every turn. An owner can also decide whose prompt cache lives an hour.
-   A developer is no longer told they hit a spend limit when the cause was a seat gone quiet or a model list that failed to refresh. `selan codex` starts on the model you last named.
-   Reactor can sign in to a connector for a company: a person presses Connect, the provider's consent runs, and every later run gets the stored grant. Connecting a second connector no longer overwrites the first.

## Clear stale tool results, with a switch for each developer

21 September 2026

-   Selan can clear stale tool results from long Anthropic turns, off by default. A developer chooses for their own machine with `selan feature enable context-editing` or `disable`, and that outranks the company setting. Clearing old tool-call inputs is a separate switch.
-   `seland codex` now starts at full access. Before, it was set never to ask while the sandbox stayed on, so a command that reached the network was refused outright.
-   Reactor shows a remote agent's runs in a panel with Run and Stop buttons and a transcript that arrives while the run works. An agent has a system prompt, and a run has its own input.
-   Switching Gemini on at Vertex no longer switches it on at OpenRouter, and switching it off at one provider no longer removes it from the other. The Add token dialog opens on a name and hides what you cannot connect.

## Logs by person, end users on a key, and refreshed model prices

20 September 2026

-   Logs can be narrowed to one person, for readers who see everybody's requests. A spend limit saves when you leave the field, and creating a CLI token opens a dialog.
-   A key's panel lists the end users it served, taken from the end-user header on the request. It shows the top 50 and the full count. Billing and budgets still key on the authenticated address.
-   Rates were refreshed for seven models, and the largest change cuts Kimi K3 by 43%. New requests are priced at the new rates, and costs already recorded do not change.
-   On the Models screen, disclosures now open and fold, each row fits on one line, Ollama's models are offered to connect, and who switched a model off is kept. A month of Usage loads faster.

## Declared launches with selan run, and a canvas of remote agents

19 September 2026

-   A repository can declare launches in `.selanrc.json`, and `selan run <name>` starts one. An entry with `"ask": false` suits an agent that should do the work rather than ask you. See [the CLI reference](https://selan.ai/docs/reference).
-   A 30-day view now counts seats for the whole window. Logs filtered to Failed and one provider no longer lists requests that ended in success, and deleting a credential no longer erases its history in Usage.
-   Reactor is a canvas of the agent fleet with scheduled triggers that fire them. A play button fires a trigger at once without changing its schedule, and each fire is recorded with what started it.

## One Models section per provider, and Google Cloud connectors

18 September 2026

-   The Models screen is one section per provider, so Opus can be on for a seat and off for an API key. Anthropic's four models get a switch, each row says which picker it reaches, and connecting a metered key needs an owner.
-   Haiku no longer fails every turn for a company with only an OpenRouter key. An empty thinking block is repaired and resent instead of returning a bare 400, and the picker lists models a company can lease by name.
-   Four Google Cloud connectors are added: Logging, Monitoring, Cloud Run and BigQuery. Each needs the company's own client and signs in with a read-only scope, so tools that write stay listed but fail when called.
-   Usage groups by the application a request names, so an agent built on the Agent SDK is no longer filed as the SDK. Stacked charts show the day's total on hover and dim the other segments.

## Selan MCP goes live, and overloads no longer end a turn

17 September 2026

-   [Selan MCP](https://selan.ai/docs/mcp) is live. A developer can ask Claude Code about their company's Selan setup through ten read-only tools, and Trello is now a connector.
-   When a provider reports overload part-way through a streamed answer, Selan now resends the request on another credential, preferring a metered key, instead of ending the turn. Logs files such a stream as Failed, not Ok.
-   Usage splits traffic by client. Codex has its own entry instead of Other clients, Claude Desktop's connectors and the Agent SDK are no longer counted as Claude Code, and a request can name its application, which Logs shows.
-   A saved spend limit updates the gauge and banner straight away, the Secrets feed loads faster, and registering no longer needs a second sign-in.

## Gemini tool calls fixed, and refused requests say why

16 September 2026

-   Gemini tool calls in a multi-call turn no longer turn into prose. Selan replays the one signature Gemini issues on every call in the response, and a history that is only partly signed is replayed whole.
-   Logs now says why a request was refused, such as a spend limit, a paused member, too many open leases or no free credential. Each reason has a sentence saying Selan refused it, and the requested model is now recorded.
-   Connectors, Models, Spend limits and CLI tokens are now pages in the navigation rail, not rows in Settings that opened a modal. Live CLI tokens no longer appear on Members, because the CLI tokens page already carries them.
-   Logs can be filtered by whether the caller saw a failure, so a request rescued by failover is not counted as failed. The availability gauge now takes each seat's own worst window before averaging, so it no longer reads healthy over seats that cannot serve.

## A Vertex endpoint fix, and spend limits from a member's panel

15 September 2026

-   A [script for Vertex projects](https://selan.ai/docs/vertex) re-enables a project's models in every region, which stops `404` and `403` answers from the `global` endpoint for models the project had enabled, and the opt-in `--data-sharing` flag sets the consent Claude 5 models need.
-   Logs now keeps the message Vertex sends with a `403`, which is the diagnosis: a routing miss, missing data-sharing consent or the Vertex API switched off. Owners are no longer told to reconnect a key that was never at fault.
-   An owner can set one person's spend limit from that person's panel on Members, without going to Settings. The panel also shows an outline while it loads and reads only that member's usage, so it opens faster.
-   Gemini sessions that turned tool calls into prose such as `[called Read with {...}]` had one cause fixed: the store of thought signatures could not be read or written. A second cause is still under investigation.

## Switching model mid-session no longer ends the conversation

14 September 2026

-   Switching model in the middle of a session, such as from GPT to Opus, no longer ends the conversation with a `400` about an invalid thinking signature. The repair now also runs on turns that contain a tool call.
-   A company's plugin marketplaces now appear in Claude Code, declared for each launch and never written into the developer's own settings. The Plugins screen has a CLI section, and a marketplace can name plugins to install.
-   A Codex overload refusal now reaches the client as a retryable `503`, not as a `200` carrying an error. Non-streaming Messages callers also stop waiting two seconds on every Codex turn.
-   A pool that can serve nothing now reads 0% availability instead of a small positive figure. Spend marked at the very end of a period and reconciled just after it is no longer counted twice.

## Selan can speak: a text-to-speech route

13 September 2026

-   Text to speech is available at `POST /openai/v1/audio/speech` ([Voice](https://selan.ai/docs/voice)). A company turns it on with a setting that carries the model, voice, response format and a character limit, and `null` means off.
-   Voice requests are priced from the provider's own figure for each request, so spend limits apply to them and Cost shows a value. Logs shows a dash in Tokens for voice, since no provider reports a token count for speech.
-   Claude Desktops set up from now on send inference to `gw.selan.ai/anthropic`. Desktop's picker now lists each model once and marks a large context window on the id, and GPT models in Claude Code get their full window.
-   GLM 5.3 Flash is in the catalogue. A model's name is now the same in the picker and the settings panel, and where a model cannot take images, Selan replaces them with a short notice instead of dropping them silently.

## gw.selan.ai gateway, Terms at sign-in and a rebuilt Billing screen

12 September 2026

-   `selan claude` now points at `gw.selan.ai/anthropic` and `selan codex` at `gw.selan.ai/openai/v1`. Every existing `/v1/*` path keeps working unchanged, with no redirect and no removal date.
-   A person now accepts the Terms when they sign in, once per version, and sessions already open are not signed out. The upgrade dialog links the Terms and the refund policy, and its confirm button stays disabled until the box is ticked.
-   Billing is rebuilt: one status block on top, plan, seats and VAT as three cards, the four priced plans in one card with a switch, the card on file with its brand, last four digits and expiry, and invoices as a table.
-   A provider error in the middle of a stream now reads in Selan's words with a Selan request id, and a mid-stream `server_error` is retried. Gemini's `medium` effort level is now served as `medium` instead of `low`.

## Sign up and create a workspace in one step

11 September 2026

-   Someone who signs in with no company now sees a Create the workspace button and goes straight in, instead of meeting a refusal and signing in twice more. A workspace created this way starts with Billing switched on.
-   A new company can now pick a plan on Billing. A company on an agreed price sees that price on its Current card, the VAT note follows the actual treatment, and a failed payment shows a warning before the account freezes.
-   Gmail, Calendar and Drive are three connectors again. One switch had given every developer all three products' tools, 38 in all, before a word was typed.
-   Usage can now be filtered by team, and a ranked Teams column joins the other rankings. CLI keys are never counted in it.

## Teams, a Billing page that asks first, and a Codex config fix

10 September 2026

-   Teams are new: a label you put on a person to report on a group. A team grants nothing and caps nothing, a person is in one team at most, and deleting a team returns its members to unassigned.
-   Plan buttons on Billing now ask before acting. The upgrade dialog quotes the tax-inclusive price and says the money is not refunded if you move back down, and the page shows whether a card is on file and lists paid invoices.
-   `selan codex` no longer writes a second provider table into a developer's Codex config, which Codex refused to load. A config that already has a duplicate is repaired, and the developer's own comments are kept.
-   A refusal from the Codex backend now reaches Claude Code with the right status, so the agent reports the real error instead of blaming the gateway. An oversized prompt makes Claude Code compact rather than resend it.

## Billing drops credits, and people are emailed about dead credentials

9 September 2026

-   Billing no longer shows a credit balance, top-up buttons or a ledger. The screen is now Plan, then Details, and the seat meter counts seats rather than the people who were active that day.
-   When OpenAI ends the session on a ChatGPT credential, the person it belongs to now gets an email asking them to sign in again. Only a new sign-in restores it.
-   A Gemini turn now sees a screenshot that Claude Code returns inside a tool result. It had answered about a picture it was never shown.

## selan codex now reaches Claude and Vertex

8 September 2026

-   `selan codex` can now use a company's Anthropic seat or console key and its own Vertex project, neither of which it could reach before. Gemini models in a Codex session can now use the company's Vertex quota.
-   Leaving a plan now waits for the paid period to end, and Billing shows a banner saying what happens and when, naming the people and CI tokens that lose a seat.
-   A revoked ChatGPT credential is no longer probed every fifteen minutes, and its row now says what is wrong and offers Reconnect. Pausing and resuming a revoked credential no longer puts it back in rotation.
-   Gemini requests no longer fail with `400` when an MCP tool schema declares a type list, such as string or null. A cut-short Codex turn now reports its real usage.

## Paid plans start a subscription, and CI tokens take a seat

7 September 2026

-   Picking a paid plan now starts a subscription, an owner can cancel, and a company can downgrade when its seats fit the smaller plan. CI tokens now count as seats beside members, and the Create button only offers what the plan allows.
-   A free ChatGPT plan is now shown as unable to serve and is no longer leased. When a Codex credential's weekly window reaches 90% and the account holds a banked weekly reset, Selan now uses the reset instead of letting it expire.
-   Insights now answers in about half a second, down from about four seconds. After a filter change the control you touched shows a spinner, so you do not read the last filter's numbers under the new one.

## Gemini works on a company's own Vertex project

6 September 2026

-   A Gemini session on a company's own Vertex project now works end to end. Gemini turns are priced, so spend limits apply to them, and cached tokens are no longer costed at the full rate.
-   Connecting a Vertex project no longer requires Claude quota. A company that only wants Gemini can connect, and each model is routed to a publisher that serves it.
-   Models a company has switched on now appear in Claude Desktop's picker, which had not listed them. Desktop's list is also ordered for Desktop, because it reads the first row as the session default.
-   Deleting a credential keeps the spend counters behind a member's daily, weekly and monthly limits, so the allowance carries on against a replacement key.

## Insights lists tool definitions, and GPT-6 Astra is in the picker

5 September 2026

-   Insights has a Definitions tab listing every tool a request declares, with its share of the tool block and how often it was called. A large definition that never runs now stands out.
-   GPT-6 Astra is in the model picker, after Sol, with no subscription route, because the ChatGPT subscription seats checked list only the 5.x family.
-   A company's context limit now applies on a launch that names no model, where it had no effect and sessions compacted at 200k. Discovery now returns each model's context window and capabilities to clients other than Claude Code.
-   A new company's first screen no longer shows column headings over nothing. Usage tells three empty states apart and Insights six, such as no credential yet, connected but never run, and tracking off.

## Fast mode costed correctly, and Logs shows provider messages

4 September 2026

-   Fast mode is now costed at twice the standard rate, on seats and metered keys alike, where it had used the standard rate. A per-company switch for fast mode is off until someone turns it on.
-   The Logs panel now shows the provider's own message for a failed Vertex request, under the attempt it belongs to. A `4xx` there used to appear as a bare number.
-   A credential's panel now says how much of its traffic failed. Past 10% a warning opens the panel, and with fewer than 20 requests it says so instead of quoting a rate.
-   On a phone, the menu closes when you tap a link, and controls that were smaller than a thumb are now larger. The menu sheet drops two rows a phone cannot use: a terminal command and a link to desktop-app instructions.

## Logs shows one row per request, and Insights shows where context goes

3 September 2026

-   Logs shows one row per request. A request rescued on a second credential is no longer counted as several failures: the row carries the status the caller got, the time summed across attempts and the price. A provider filter lists only providers the company holds.
-   A `404` from Vertex's global endpoint is no longer passed straight to the caller, and a `529` is no longer retried onto another subscription seat. A request whose model name comes late in a large body now reaches the right provider.
-   Insights now shows which tools use the context: one bar over every part of a request, such as tool results, system and tool definitions, and a second over tool names. It records sizes and tool names only, never content.
-   An Ollama flat plan no longer counts its equivalent cost against member spend limits, which had burned the limit and then withheld the seat with a `402`.

## Codex's picker follows the same models and failover as Claude Code

2 September 2026

-   Codex's model picker now lists the same models Claude Code's does: those an owner switched on in Settings, limited to the ones Codex can use. Lists get shorter, and the rest stay reachable with `--model`.
-   Picking a model in Codex now follows the company's ordered chain of credentials, so Codex fails over to the next one when a credential fails, as Claude Code does. A typed `provider:model` still pins one route.
-   In Claude Code, some model rows in Settings were drawn with a failover chain but leased as a single route. They are now leased with the chain they show.

## An Analytics screen, and Desktop reaches Selan-hosted MCP servers

1 September 2026

-   Claude Desktop can now sign in to Selan-hosted MCP servers such as Brave Search, with a browser sign-in on first use. A company that enabled the connector now has it on by default in Desktop, and an explicit off still wins.
-   A new Analytics screen has four cost tiles with their change against the earlier window, two stacked charts, and ranked lists that split people from machine callers. Billing type, provider and principal filters combine.
-   Selan can now answer Codex's model refresh, so the company's models appear in Codex's picker. It is a per-company setting, off by default, and it reaches only developers signed in to ChatGPT in Codex, because Codex asks only then.
-   A Braze connector for the EU cluster joins the [connector catalog](https://selan.ai/docs/mcp-connections). Insights no longer reports a repository cloned through its Git host's alternate SSH endpoint as new.

August 2026

## Availability charts, and a metered key after two refusals

31 August 2026

-   When two different subscription seats refuse a request with `429`, Selan now moves it to one of the company's own API keys, if it has one, instead of handing back the refusal. A member's metered spend limit still applies.
-   The Tokens screen now charts availability: eight-hour bars in the Tokens column, and hourly or two-hourly bars in a pool or credential modal. Every window figure counts what is left, and the Availability column sorts, smallest first.
-   Brave Search is a connector that signs in with the developer's Selan session, so there is nothing to configure. It is not switched on by default in Claude Desktop, which cannot yet present that token.

## OpenAI Platform keys can be pasted; Cost drops its date picker

30 August 2026

-   You can now paste an OpenAI Platform key, the `sk-proj-` kind, as a credential. It is its own provider, apart from signing in to a ChatGPT account, and neither stands in for a request that names no model.
-   Cost now states a fixed thirty days and has no date picker, because a verdict that flips when you drag a range is not a recommendation. A seat held for only part of that window shows a direction rather than a decision.
-   Seat traffic filed under a model alias is now priced instead of showing no money. A model served through one provider no longer wears another's mark, and the money columns read `api price /1M` and `your price /1M`.
-   Token counts above a billion show in billions, not as a four-digit number of millions. A provider on Cost opens its own panel at its own address, which Back closes.

## A Cost screen weighs subscription seats against metered prices

29 August 2026

-   A new Cost screen sets each provider's subscription seats beside what the same traffic would have cost metered, with a `saves` or `loses` verdict and a multiple. A seat with no known plan shows no figure, not zero.
-   Usage opens on one row: new tokens, requests and the share absorbed by seats, with the money figures on Cost. A member's repositories show what they actually billed, so a repository a plan served shows no money.
-   When a provider key runs out of credit and answers `402`, Selan now moves the request to another key and rests the exhausted one for fifteen minutes. Cooldown text on screen says refusal rather than rate limit.
-   The Members roster opens on who was active most recently rather than on role. Modals no longer collapse to a sliver in Safari.

## Link a Claude account with OAuth, and an embeddings endpoint

28 August 2026

-   An owner can link a Claude account from the Tokens screen with OAuth, and Selan renews it before it expires and records its plan. Linking an OpenAI account is now open to every company.
-   `/v1/embeddings` is now served, takes no concurrency slot and never uses a subscription seat. Non-streaming calls keep the arguments of translated tool calls.
-   A provider's organisation-wide spend cap that answers `429` no longer cools your credentials one after another. A key marked preferred now takes a session back from a non-preferred key.
-   Usage now opens an hour as well as a day, and a drilled hour draws sixty one-minute bars. The By member, By API, By model and By token lists no longer drop rows: the tail sits behind a control that names its size.

## A model Selan cannot serve is refused, not swapped

27 August 2026

-   In Codex, picking a model now runs that model. One Selan cannot serve is refused with a `403` that lists what the company can ask for, and bare ids such as `gpt-5.4` resolve through their model family.
-   Connectors that use your company's own OAuth client now work in Claude Code as well as Desktop, installed by the CLI and kept in step on each launch. Register both loopback callback addresses on port 53280, or one app fails with `redirect_uri_mismatch`.
-   An owner can hold a CLI token to the company's own provider API keys. With that switch on, the token never uses a connected subscription seat, even an idle one, so an overnight job cannot empty seats developers share.
-   `seland codex` launches [Codex](https://selan.ai/docs/codex) with its approval prompts off, after one confirmation. The sandbox stays on, so some commands stop asking and others are refused and the model is told.

## selan codex --model takes effect, and Usage counts new tokens

26 August 2026

-   `selan codex --model` now changes the model Codex runs. Codex turns now appear in Logs, Usage and spend limits, and `selan codex` checks that the company may run Codex and the named model before it starts.
-   Selan now prefers Claude accounts that have used less of their window, treating accounts within ten points of each other as equal. Before, accounts were ordered by how recently they were used, which said nothing about how much was spent.
-   Usage now ranks and draws on new tokens, not the sum of all four kinds, which cache reads dominated. Sonnet 5 is now priced at its introductory rate during that period, where it had read 50% high.
-   Picking a `[1m]` model no longer makes every turn fail with a `400` that sends Claude Code users to `/model`. Selan now removes the long-context beta that no subscription in the pool carries.

## Codex can use Selan, and members can join by email domain

25 August 2026

-   The [Codex](https://selan.ai/docs/codex) CLI can now point at Selan. Selan answers the OpenAI Responses API, runs the request on a subscription the company already pays for, and meters and scans it like any Claude turn.
-   An owner can let anyone with an address at a verified company domain join on first sign-in, with no invitation. It is off by default. Joiners arrive as `read` members, and free-mail domains never match.
-   A CLI token can now have a spend limit of its own. Without one, it follows the company-wide per-user limit. Device tokens are not listed, because they spend as the member.
-   In Usage, click a daily column to open that day and step through days with arrows. Every figure shows how it moved against the equivalent earlier window. Members, Tokens and Spend limits gain sort, search and filters.

## Pause a member, and a found secret is removed everywhere

24 August 2026

-   An owner can now pause a member instead of removing them. A paused member keeps their seat, role and history, can still sign in to read their own usage, and is refused a credential with a `403` on every request.
-   Secret scanning now removes every occurrence of a secret it has found, not only where a rule matched, so a repeated secret no longer gets every later turn refused. A refusal answers `422` instead of `503`, so clients stop retrying it.
-   The Models panel shows one row per model, with the credentials that can serve it as pills in the order they answer. An arrow marks a fixed order: the paid-for seat first, then a key marked preferred. Beyond that, load decides.
-   When a provider answers `529`, Claude Code now gets a retryable `503` that names the provider and says Selan received the error from it, instead of its own generic gateway banner.

## Ollama Cloud and a Selan-hosted Google Workspace connector

23 August 2026

-   Ollama Cloud is a new provider: a flat monthly subscription, connected with a key. Its open-weight models, including DeepSeek, Kimi, Qwen and GLM, are available, and a request that names no model is never moved onto it.
-   Google Workspace is now a [connector](https://selan.ai/docs/mcp-connections) hosted by Selan, named Google Workspace (Selan MCP). One entry covers three Google products, and setup drops from eight steps to five. Your company creates an OAuth client internal to its own Workspace, and Selan stores no token.
-   Connectors that use your company's own OAuth client now appear in Claude Desktop. They had been switched on and offered to developers but never showed up there, because the connection details lacked a field Desktop requires.
-   Claude Desktop now switches on, by default, each connector the company has connected, while the CLI stays opt-in per developer. On the Connections page, flipping a switch no longer moves its row.

## One picker row per model, with fallback across credentials

22 August 2026

-   A model that several of your credentials can serve appears once in the picker. Selan uses the subscription first and moves to a key for the same model when the subscription is at its limit. `--model` also takes a bare name.
-   The Members screen shows what each person cost on metered credentials, over the same period as their tokens. The column is left out for a company with no metered credential.
-   A Claude Code session that moves from a GPT model back to a Claude model no longer fails on every request with a `400`. Selan strips the empty text blocks that the GPT translation left in the transcript, and resends once.
-   The Usage chart is drawn in tokens, so an hour of real work on subscription seats no longer looks the same as an idle hour. Money is one figure above the chart, and hovering a bar draws a line up to it.

## A Tokens page split by what a credential serves, and Insights fixes

21 August 2026

-   The Tokens page is split into bands by what a credential serves, each with its own count and table, ordered the way requests reach them. A key is renamed by typing over its name, and a `read` member can rename the keys they added.
-   Insights shows a workspace section for sessions launched from a directory that holds several clones, where they used to land in the not-recorded row. The CLI sends the longest leading path that all the clones' remotes share, and the company's tracking setting still applies.
-   Insights now accounts for the whole window: usage it cannot attribute to a repository appears in one not-recorded cell. A bring-your-own-key model also draws one row in Usage and Insights, not two.
-   Claude Desktop setup is one settings file to import, with a screenshot for each button. The file is a pointer, not a credential. A company's own OAuth client for a connector now reaches Claude Desktop, though not Claude Code. [Set up Claude Desktop](https://selan.ai/docs/claude-desktop).

## Invite a pasted list, and whoami names the right company

20 August 2026

-   `selan whoami` and the statusline now describe the credential the running session will send, so a session started before a company switch no longer shows the new company while billing the old. A credential in your own Claude Code settings file no longer overrides Selan's.
-   You can invite a pasted list of up to 100 addresses with one role. Newlines, commas and semicolons all work. The report follows pasted order and names unreadable lines. If a run breaks, Try the rest refills the untried addresses.
-   A `read` member now sees only the keys they added and can add their own, which arrive paused until an owner or an editor resumes them. Read members cannot pause, resume or remove keys.
-   In long sessions, [secret scanning](https://selan.ai/docs/secrets) now resumes where it left off instead of rescanning the whole conversation on every turn. Each scan of a large transcript is also faster and uses less memory.

## Sixteen more connectors, and Pleo and Figma sign-in fixed

19 August 2026

-   The connector catalog grows from 18 to 34, including Datadog, PostHog, Supabase, Zapier and PayPal. All sixteen register themselves, so none needs a company OAuth client. [Connectors](https://selan.ai/docs/mcp-connections).
-   Connecting Pleo or Figma in Claude Desktop no longer ends in a bare HTTP 400. Desktop refuses a callback from a host other than the one that issued the sign-in, so Selan now tells it which sign-in host to expect.
-   Claude Desktop is now labelled with your company's name instead of Selan, which shows which company a window is spending in.

## Connectors per developer, Vertex requests, and Selan's first emails

18 August 2026

-   An owner now allows which connectors can be reached, in a panel under Settings. Each member places them on their own Connections page, with separate Claude Desktop and Claude CLI switches. The catalog grows from 14 to 18, including Airtable and Slack.
-   Plain Claude Code requests now complete on a company's own Google Vertex project, priced at Anthropic's rates. Vertex rejects the `anthropic-beta` header and `context_management` field, so Selan removes them and context editing does not apply there. [Vertex](https://selan.ai/docs/vertex).
-   An owner can mark one API key as preferred in the token modal. Selection tries OAuth accounts first, then the preferred API key, then other API keys. A paused preferred key falls through, and the button is not offered on OAuth accounts.
-   Selan now sends two emails. An invite goes to a person an owner adds to a company, only when they could not sign in before and now can. A welcome goes to a founder who finishes self-service registration.

## Claude Desktop signs in, and MCP connectors arrive

17 August 2026

-   Claude Desktop now signs in through Selan instead of carrying a token. The setup dialog hands over three values, none of them secret: a bootstrap URL, an issuer URL and the client id `claude-desktop`. Nothing is minted or needs keeping.
-   An owner can switch on MCP connectors from a curated catalog of fourteen. Every developer gets them at launch in Claude Desktop and Claude Code and signs in to each as themselves. Connectors are off by default and only owners can switch them on. [Connectors](https://selan.ai/docs/mcp-connections).

## Money in Usage and Logs

16 August 2026

-   In Usage, By model and By token show tokens and cost as one right-aligned figure. Only the billed amount is printed. A subscription seat shows no amount, because it is not billed, and a row nothing could price shows a dash.
-   The Logs price column is headed Price instead of List price. A subscription row is grey and explains that it shows the equivalent cost at API list price, because a flat-rate seat is not charged per token.
-   Dragging a dialog's scrollbar, or selecting text and releasing the mouse outside the dialog, no longer closes it. This matters for a secret that is shown once.

## Run agents unattended with selan agent-run

15 August 2026

-   `selan agent-run` runs a Claude Code agent unattended, for CI. It launches like `selan claude` with the same credential, gateway, settings and repository attribution, so a run is metered, budgeted and attributed like a developer's. [Agents in CI](https://selan.ai/docs/agents).
-   It streams a run log with one line per event: tool calls, failed results, short narration, then a final line with outcome, time and cost. Colour appears only in an interactive terminal, so piped output stays greppable.
-   By member and By model in Usage no longer show a money column, only tokens and share of usage, plus requests for members. By token keeps a dollar figure priced at what was billed, so a subscription seat reads $0.00 rather than its list-price equivalent.
-   A model written in an agent's front matter or a settings file can now be a provider model such as `openrouter:qwen/qwen3.8-max`. Before, it failed with a model error. A mistyped name containing a colon now returns `403 model_not_allowed`.

## Claude Desktop's model picker works with Selan tokens

14 August 2026

-   Claude Desktop's model list answered 401 for every Desktop token, so the picker was empty and Desktop sent no requests. The list now loads.
-   If Selan cannot reach the service that identifies the token, the model list now answers 503 rather than an empty list, so Desktop does not save an empty picker.
-   Gemini 3.7 Flash joins the curated OpenRouter models, with its 1M context window.

## A company setting to keep members on their own accounts

13 August 2026

-   Settings, under Reliability, has a new Token rotation switch, on by default and owner-only to change. Turn it off and a member who has connected an active OAuth account is served only by their own accounts, even when those are exhausted.
-   A member who has connected no account of their own is not restricted. An account counts as theirs only if they added it. A developer whose own accounts are all unavailable currently sees a general no-capacity message.
-   Qwen3.8 Max joins the curated OpenRouter models, with its full 1M context window.
-   After sign-in, an owner now lands on Usage with Usage highlighted in the rail. It used to open Usage with Tokens highlighted.

## Claude Desktop can run on your company's account

12 August 2026

-   Any member can issue themselves a Claude Desktop token from the rail in Selan (Set up Claude Desktop, then Issue a token) and paste two values into Desktop's gateway settings. The token lasts 90 days, is shown once, and there is one per member.
-   Desktop spend is attributed to the member who issued the token: it counts against their own budget and appears on their own row in Usage.
-   Clients other than Claude Code get Anthropic's models in their picker alongside the company's own models, provided the company holds an active Anthropic token.
-   Logs has a new client column: a terminal, a monitor or a question mark, with the client's name on hover.

## Spend views are owner-only, and selan version arrives

10 August 2026

-   Money and other members' activity are now for owners: the Usage screen, spend wherever it is drawn, and the request feed in Logs. An editor still adds, pauses, resumes and removes keys, and everyone still sees the full member list.
-   Setting a key's budget is owner-only too, because the budget meters show spend. After sign-in, a member who is not an owner lands on Tokens instead of Usage.
-   `selan version` prints the name and version on its first line, then checks whether an update is available. If that check cannot reach the download host, it prints a warning and still exits 0. A build ahead of its channel reads as current.

## A one-button Install dialog

9 August 2026

-   The Install dialog in Selan now leads with one action: a full-width button that copies the install command. The button confirms the copy in its own label.
-   The `login` and `claude` commands that come after the install are written as one sentence and copy themselves when clicked, instead of each having its own button. The dialog is narrower too.

## Your own models in Claude Code's model picker

8 August 2026

-   An owner can switch models on in Settings, and they appear in Claude Code's `/model` picker beside Anthropic's own, routed to the company's own provider key. Connecting a key only makes models available, and developers can use only models the company has switched on.
-   `selan claude` no longer sets Claude Code's flag that disables non-essential traffic, which had kept a company's models out of the picker. A setting of your own is still honoured.
-   `seland claude` no longer passes the word `claude` to Claude Code as a prompt. The statusline and the next-step messages now name `selan` rather than `seland`.
-   Settings is now four groups instead of six flat rows, with each explanation behind the same info tip Insights uses.

## Insights ships, and the CLI updates itself

7 August 2026

-   [Insights](https://selan.ai/solutions/insights) shows where the spend went: by repository, by person, and by how much context was re-read from cache rather than rebuilt. It is owner-only, off by default, and offers to forget what it recorded when switched off.
-   `selan claude` now installs a pending update before it launches, with a five-minute budget. `SELAN_NO_AUTO_UPDATE` skips it, a failed update is only a warning, and the update notice is now a bordered block.
-   `seland` is the same binary under a second name. It launches Claude Code with `--dangerously-skip-permissions`, after one keypress to confirm when run interactively and with no prompt otherwise.
-   Creating a workspace now hands the founder to sign-in instead of leaving them signed out. A pasted credential has whitespace stripped anywhere in it, and the 24-hour charts in the detail panels now plot tokens, not equivalent spend.

## Self-serve workspaces and a usage statusline in Claude Code

6 August 2026

-   Anyone with a work email can now create a workspace at auth.selan.ai/r. A domain check comes first: a claimed domain goes to an ask-to-join screen naming the owner, and a free one goes to the name field. Workspace names accept Unicode letters.
-   `selan usage` prints your company's rate-limit headroom and your own spend budget, and the CLI draws the same meters in a [statusline](https://selan.ai/docs/statusline) inside Claude Code. It is on by default, leaves an existing statusline alone, and `SELAN_NO_STATUSLINE` turns it off.
-   `selan whoami` can now name a CLI token, and shows the address it spends as, labelled `spends:`.
-   Model rows start with their vendor's mark where the vendor is certain, and the clock is 24-hour everywhere, whatever the browser's locale. The time zone and date order still follow you.

## CLI tokens, outage failover and gateway errors that name their cause

5 August 2026

-   An owner can mint a CLI token in Settings. With `SELAN_TOKEN` set, `selan claude` runs with no browser sign-in, which suits CI and containers. The token belongs to the company, spends as itself, appears on Members, and wins over any stored session.
-   Owners can switch on outage failover, off by default. When Anthropic answers `529`, a request retries once on the company's own provider key, and three accounts seeing it within a minute send the company to its own keys for a minute. Spend limits still apply.
-   Errors that Selan itself produces now carry a source, a fault and a request id, with matching headers. The four causes that all used to read `502 selan: upstream request failed` now each have their own status.
-   The Usage page opens on three figures: API cost, On subscription plans and Absorbed by seats. Signing in now lands on Usage, and Tokens moves to `/tokens`.

## Gateway path allowlist, and sign-out ends the auth.selan.ai session

3 August 2026

-   The gateway now forwards only known inference paths, such as `/v1/messages`, `/v1/messages/count_tokens` and `/v1/models`, and refuses any other path with a `403`. The check runs before a credential is taken from the company's pool.
-   Signing out of control.selan.ai now also ends the session that auth.selan.ai created when you signed in, not only the control session.
-   A client that disconnects mid-upload while secret scanning is on now releases its credential straight away, instead of holding it for up to five minutes.

## Usage separates billed money, plus member activity and dated Logs

1 August 2026

-   Usage no longer adds a bill to money nobody is charged. A member's weekly split stops filing unknown cost as savings, the split sentence now shows for all-subscription weeks, and By-model and By-member cost columns say which kind of cost they hold.
-   The member panel shows a 30-day activity strip shaded by requests, so a day of work on a subscription account no longer looks like a day off. Each strip scales to that member's own busiest day.
-   The Logs Time column now says which day a row is from, so an old row and a new one no longer read the same.
-   The text colours on the dark theme are brighter, and the dimmest step now meets the 4.5:1 AA contrast ratio on every surface.

July 2026

## Spend limits move from the key to the person

31 July 2026

-   A spend limit now belongs to a person. Settings has a Spend limits section with a company default and an optional override per member, enforced across every API key; a blank field inherits. A key's own screen shows only the key's limits.
-   A company can turn off Claude Code's commit attribution, and the CLI applies the choice at launch. If the lookup fails, Claude Code launches with its own defaults, and a `--settings` you pass yourself always wins.
-   The control panel now has a 240-pixel navigation rail in place of the top bar, and every screen fits a phone, where the user menu and sign-out had been off-screen.
-   An account that hits a `429` now waits for its recorded window reset instead of retrying every three minutes. A spent window shows on screen, and the leasable count checks both windows.

## Secret scanning, and the Selan CLI on Windows

30 July 2026

-   Secret scanning is a per-company setting, off by default. When it is on, Selan checks each request against the gitleaks rule set and replaces any match with `[REDACTED: <rule-id>]` before it leaves for the provider. It redacts rather than blocks.
-   The Selan CLI now runs natively on Windows, with a PowerShell installer and `.zip` downloads. `selan claude` passes Claude Code's exit status through, and works when npm installed `claude` as `claude.cmd`.
-   The headroom strip now leads with what predicts a `503`, so paused, cooling and fully busy accounts no longer hide behind an average. It also reports the 7-day window beside the 5-hour one.
-   A screen you have visited is now served from cache, so switching tab or range no longer blanks the table to a spinner. The dark theme's neutral greys are also lighter.

## Own-key requests no longer hang, plus a dark theme

29 July 2026

-   Requests through a company's own provider key no longer hang until they time out with a `524`. Claude Code requests to nexos.ai no longer fail with a `400`.
-   Members now shows who is using Selan and whether anything is running. A State column reads running, idle or never ran, beside 24-hour token counts with a ranking bar. Last active replaces Added.
-   Logs has 24h, 7d and 30d range tabs, and Time, Tokens and Cost sort when you click the column header. Unpriced rows sort last in both directions, and range and sort live in the URL, so a view survives a reload.
-   The control screens and the sign-in page move to one dark theme. There is no light mode and no switcher.

## Connect your own nexos.ai or OpenRouter key

28 July 2026

-   A company can connect its own nexos.ai or OpenRouter key on the Tokens screen, then run `selan claude --model openrouter:<model>` to use a non-Anthropic model through it. Caps, spend limits and logging still apply, and compaction follows the model's real context window.
-   Selan treats API keys from every provider as one family and picks by load, with subscription accounts still first. A request that hits a `429`, `401` or `403` is retried once on another credential, and spend on these keys now counts against spend limits.
-   Sign-in with a Microsoft organisation account now works alongside Google. The same email address is the same user on both, and your name and photo are kept.
-   On control.selan.ai, dialogs stay open when you save, and a rejected input keeps what you typed. The Usage tile now reads API spend: money billed on API keys only, with the subscription equivalent noted separately.

## Spend limits on API keys

27 July 2026

-   An API key can now carry six spend limits, checked each time a request needs the key. A key's dialog has a Budget section, and a held key is dimmed in the Tokens list.
-   When a limit stops a request, Selan answers `402` with a `Retry-After` header. The message says whether it was your personal limit or the workspace's, and when it resumes. Selan does not retry it.
-   Removing a member now ends their CLI session as well as their browser sessions.
-   The Usage page opens on 24 hours instead of 7 days, and absolute times show in your own timezone.
