Skip to main content
October 15, 2026 · v0.5.156

New Features

Notifications

Oxygen now has a notification inbox, and custom apps can use it to reach people in the app, on their phone, by email, or in Slack:
  • An inbox in the top bar - A bell with an unread badge opens your notifications. On a phone it opens as a full-screen sheet, and a tap on a push notification lands on the inbox.
  • Push notifications - Turn on Push on this device under Settings → Account → Notifications. Oxygen can be added to an iPhone’s Home Screen, which iOS requires for web push, and Settings explains how.
  • Mute what you don’t need - Each kind of notification can be muted per app and per channel. Notifications an app marks as critical can’t be muted.
  • Oxygen’s own events - Oxygen tells you when a workspace finishes importing from GitHub, when an automation or Airway run you started fails for good, and, for org owners, when billing is past due. A scheduled run’s failure goes to the workspace admins.
  • Anomalies to people, not just channels - A .monitor.yml notify: block can now list people: (an email, a role or a team), and slack_channel is optional.
An older Oxygen version refuses a .monitor.yml that uses people: or leaves out slack_channel. Add these blocks only once every server runs this release.

Notifications from Custom Apps

Custom apps can notify people with one call, ctx.notify, instead of building their own email and alert plumbing:
  • Address people, not addresses - Send to a user, a role at a location, or a team. Only people who can open the app are told, and crew members without an email address still get an inbox entry and a push.
  • Every channel from one call - Each recipient gets an inbox entry, plus web push, and email or a Slack direct message when the app asks for them. Failed deliveries are retried, and an idempotency key prevents duplicate sends.
  • A bell inside the app - The SDK adds <NotificationsBell /> and useNotifications(), so people who work in a custom app all day, including crew on a kiosk, see their notifications without opening Oxygen.
  • Content stays in your organization - The text of each notification is stored in the organization’s OLTP store, not in Oxy’s database. An organization without an OLTP store can’t send notifications yet.
  • Safe on staging - On staging and sandboxes, notifications reach only the person who called the function, and the in-app bell is read-only.
ctx.email.send’s idempotencyKey is now honored too: a repeated send returns the first send’s message id instead of sending again.

Agent Tokens

An AI agent working for you can now ask for a credential of its own instead of borrowing your oxyc login:
  • Requested by the agent, approved by you - The agent runs oxyc tokens create --agent, and you approve it once in the browser.
  • Short-lived and never saved - It lasts 1 to 168 hours (8 by default), is printed once, isn’t stored on disk, and can’t be extended.
  • Staff standing only if you tick it - Your staff or partner standing is included only if the agent asks for it and you agree on the approval sheet.
  • Clearly labeled - The token is named for the agent and shows up as an agent’s token in token lists and the audit log.

Staff & Partner Tokens Page

Admin → Staff & partner tokens lists every personal token that carries Oxy staff or partner standing, the most powerful credentials on a deployment. It shows who owns each one, what it reaches and when it was last used, and lets staff with permission to manage platform grants revoke it. A lost laptop no longer means deactivating the whole user.

A Simpler Sign-In Page

The sign-in page is now one plain card. Email, Google, GitHub and Okta are all on screen at once with matching Continue with… buttons, and the “link sent” confirmation, with Resend and Change email, appears in the same card. The token sign-in screens use the same layout.

Reconcile Checks Name Their Disputed Segments

A reconcile.yml check with group_by now compares each group separately, instead of only reporting that the total drifts. The verdict lists up to 20 groups that are out of tolerance, largest difference first, with the actual and expected values and which side is missing, plus how many groups were compared and disputed.

Oxy Skills for Your Coding Agent

The Oxy platform skills are now one installable bundle that works with npx skills add and the Claude Code plugin marketplace. It covers agents, Data Apps, evals, custom apps and more, all updated for current Oxygen. The custom-apps console shows a reminder with the install commands, and the create-app dialog mentions it.

Platform Improvements

Sign-In and Security

  • Sessions are signed with a per-deployment key - Browser sessions used to be signed with a key shared by every deployment. Each deployment now has its own secret key. Everyone is signed out once when this release is deployed.
  • One account per email address - Signing in with Google, GitHub or Okta and with a magic link no longer creates two accounts when the provider spells the email address with different capitalization.
  • The CLI login page asks first - Older oxyc versions could receive your browser session without a click. The page now asks before handing the session to a program on your computer.
  • An oxyc login lasts a year - A login now lasts 365 days instead of 90, or the shortest token lifetime cap among your organizations if that is shorter, so it never stops working in an organization with a stricter policy. Tokens created in Settings still default to 90 days.
  • Clearer staff tokens page - Opened from a token session, the page now tells you to sign in with a browser instead of claiming a missing permission, and never lists a token twice.

Custom Apps

  • Browser checks - oxyc checks run --browser loads the app in a headless browser in the chosen environment and fails unless the page serves the expected build.
  • Bounded template renders - Templates in automations and the runtime stop with a clear error when a render runs too long or produces too much output. An invalid now() format now returns an error instead of crashing.

Fixes

  • HQ lands on the workspace with your apps - Opening an organization without a remembered workspace now picks the workspace with the most custom apps you can open, and HQ shows the organization’s apps from other workspaces instead of an empty chat.
  • Airway runs no longer read failed after a restart - A run whose load had finished could be marked failed if a server restarted at the wrong moment. It now finishes as completed.
  • Metric Tree predictions on more warehouses - Predict and opportunity sizing now know the workspace’s warehouse, so a ratio on DuckDB, Snowflake, BigQuery, MySQL, ClickHouse or Databricks is no longer reported as unquantifiable.