
When sovereignty becomes a design constraint
Sourcing starts with a risk register now For a decade the infrastructure question had one default answer: put it in the …

For three decades, the bastion host — also called a jump host, bastion server, or privileged access workstation — was the standard answer to a hard question: how do you let humans reach production systems without giving them direct network access to those systems?
The answer was an SSH server in a DMZ. Engineers SSH’d to the bastion. From the bastion, they SSH’d inward. The bastion logged sessions. The bastion enforced MFA. The bastion was the single point through which all privileged access flowed. It was secure-by-narrowing — fewer paths, more visibility, more control.
It was also a compromise. Bastion hosts are operationally painful: they require dedicated infrastructure, careful patching, key management, session recording tools, and they still produce session logs that are difficult to query meaningfully. They never integrated well with non-Linux systems, never solved the access problem for non-engineering staff (DBAs, finance, business analysts who need privileged data access), and never adapted to the autonomous-agent era.
In 2026, the bastion pattern is being replaced — not by a better bastion, but by an entirely different topology. The browser is the new bastion. Specifically: a governed, audited, browser-accessible session inside the organization’s cloud, where humans and agents alike do their privileged work, with every action mediated through a policy layer and recorded in a tamper-evident chain.
This piece is about what that replacement looks like, why it works for both humans and AI agents, and why mid-market organizations are adopting it faster than hyperscalers.
┌───────────────────────────────────────────────────────────────┐
│ │
│ CLASSIC BASTION PATTERN │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Engineer │ ─SSH──▶ │ Bastion │ ─SSH──▶ │ Prod DB │ │
│ │ laptop │ │ host │ │ Server │ │
│ └──────────┘ └────┬─────┘ └──────────┘ │
│ │ │
│ ▼ │
│ session log │
│ (text, hard to query) │
│ │
│ Failure modes: │
│ │
│ 1. SSH keys distributed everywhere │
│ ── revocation is theatre │
│ 2. Session logs are text, not structured events │
│ ── "what did this user do last quarter" is grep │
│ 3. Bastion only handles SSH │
│ ── databases, dashboards, internal apps go around it │
│ 4. Non-engineers don't use the bastion at all │
│ ── DBAs, analysts, finance — all on direct VPN │
│ 5. AI agents have no place in the pattern │
│ ── they cannot SSH; they cannot reason about MFA │
│ 6. Compromise the bastion, compromise everything │
│ ── single point of failure by design │
│ │
└───────────────────────────────────────────────────────────────┘
The bastion was good enough when the workforce was small, mostly engineering, and entirely Linux-savvy. None of that is true in a modern mid-market company. The finance team’s analyst needs access to the data warehouse. The compliance officer needs read access to certain log streams. The HR director runs queries through Looker. Almost none of these humans use SSH; almost all of them have privileged access; almost none of that access flows through the bastion.
Worse, the rise of AI agents in 2026 introduces a category the bastion was never designed for. An agent cannot type an MFA code. An agent cannot reason about which SSH key to use. An agent that needs privileged access has, in practice, been given a service account with broad scope and direct network access — bypassing the bastion entirely.
The pattern is overdue for replacement.
The replacement looks like this:
┌──────────────────────────────────────────────────────────────┐
│ │
│ BROWSER AS BASTION (new pattern) │
│ │
│ ┌──────────┐ │
│ │ Engineer │ │
│ │ / DBA │ ─HTTPS─▶ ┌──────────────────────────────┐ │
│ │ /Analyst │ │ Hub / Identity Gateway │ │
│ │ / Agent │ │ (SSO + MFA + RBAC) │ │
│ └──────────┘ └──────────────┬───────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ Session Spawn │ │
│ │ (browser-accessible, scoped │ │
│ │ to user + task) │ │
│ └──────────────┬───────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ Policy Gateway │ │
│ │ (tool perms, content scan, │ │
│ │ audit chain, anomaly) │ │
│ └──────────────┬───────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ Target Systems │ │
│ │ (Prod DBs, dashboards, │ │
│ │ internal apps, cloud APIs) │ │
│ └──────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
Six properties that distinguish this from a classic bastion:
Browser as the only client. Every user — engineer, DBA, analyst, agent operator — reaches privileged systems through their browser. No SSH client to install. No VPN to configure. The same surface works on a laptop and on a phone.
Session spawn per user per task. When a user (or an agent acting on a user’s behalf) starts a session, a fresh, isolated container spins up, scoped to the user’s identity and the task at hand. The session is ephemeral. Privileges are minted, not inherited.
Policy gateway in the path. Every outbound action from the session — every database query, every API call, every shell command — passes through a policy layer that decides allow/deny/augment in milliseconds. The session cannot bypass it.
Structured audit, not text logs. Every action is recorded as a structured event with user, time, target, decision, and outcome. “Show me every read of the customer_pii table by the marketing team last week” is a query, not a forensic project.
Identity all the way down. The user’s identity from the IdP flows down through the session to the policy gateway and is tagged on every event. There is no “service account in the middle” identity gap.
Agents and humans use the same path. An AI agent that needs privileged access spawns the same kind of session a human would, with the same policies, the same audit trail, and the same per-tool gating. The pattern is identity-agnostic.
Hyperscalers have invested in bastion infrastructure for two decades. They have custom session recording, custom log pipelines, custom approval workflows, all built in-house and amortized over thousands of engineers. The cost of switching away from that investment is high, and the benefit per dollar is lower than starting fresh.
The middle has none of that investment. A 12-person security team in a mid-market organization usually has either:
For either starting point, the browser-as-bastion pattern is a net upgrade with measurable wins in audit, in identity, in onboarding time for new staff, and in the previously-impossible category of agent-mediated privileged access. The total cost is lower than the bastion it replaces. The capability is broader.
This is one of the clearest cases where private AI lands in the middle before the top.
The agent dimension is where this pattern goes from “nice replacement” to “new capability.” With the classic bastion, an AI agent that needed privileged access had to be given a service account — bypassing the bastion and inheriting the human-equivalent privileges without the human-equivalent controls.
In the browser-as-bastion model, the agent spawns a session of its own, governed by the same policy layer as a human. Every action it takes is audited. Every tool it calls is gated. Every database query it issues is recorded with the agent’s identity and the human-approved task scope that authorized it.
┌──────────────────────────────────────────────────────────────┐
│ │
│ Human-initiated task: │
│ "agent, look at last quarter's customer-support tickets │
│ and produce a summary of recurring issues" │
│ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Agent session spawned │ │
│ │ Scope: read-only on tickets table only │ │
│ │ Duration: 4 hours │ │
│ │ Identity: human:jane@org / task:summary-q1 │ │
│ └─────────────────┬────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Every query passes through policy gateway │ │
│ │ Audit chain: 247 read queries, 0 writes, │ │
│ │ PII redaction applied to 14 results, │ │
│ │ 0 anomalies │ │
│ └─────────────────┬────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Summary delivered. Session destroyed. │ │
│ │ Audit trail: queryable, tamper-evident. │ │
│ └──────────────────────────────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────────┘
This is a workflow no classic bastion supports. The agent’s autonomy is bounded by the session’s scope. The session’s scope is bounded by the human-approved task. Both are recorded in the same audit chain a regulator would read.
The three pillars compose cleanly into the browser-as-bastion pattern:
Workbench / session spawns — the same JupyterHub-mediated spawn model that hosts Calliope AI Lab and the IDE also hosts privileged-session spawns. Browser access, identity-federated, ephemeral.
Astrolift — the runtime that provisions and manages session lifecycle, networking, and isolation per spawn. Multi-cloud, BYOC, inside the customer’s perimeter.
Zentinelle — the policy gateway that mediates every action a session takes. Tool permissions, content scanning, audit chaining, anomaly detection.
For organizations that have a bastion today, this is a parallel rollout: stand up the new pattern, migrate teams in order of pain (typically: agents first, then non-engineering privileged users, then engineering), and retire the old bastion when its last consumer migrates. We commonly see this take 12–18 weeks with forward-deployed engineering support .
Diagnostic questions for whether your organization is ready to retire the bastion:
Does your bastion (or VPN-direct-access pattern) handle non-engineering privileged users? If your DBAs, analysts, and compliance officers reach systems through different paths than your engineers, you do not have a unified privileged-access pattern. The browser pattern is one.
Can you answer “show me every privileged action by user X in the last 30 days” with a single query? If text-grep is involved, you have audit fragmentation. The browser pattern produces structured audit by construction.
Do your AI agents have a privileged-access path that goes through the same controls as your humans? Almost universally the answer is no in mid-2026. The browser pattern handles both with one architecture.
If you said no twice or more, the bastion is overdue for replacement.
Next in this series: the same pattern, applied specifically to financial services — where the regulatory weight on privileged access is heaviest and the audit trail requirements are most explicit.

Sourcing starts with a risk register now For a decade the infrastructure question had one default answer: put it in the …

The tool call is where the agent meets reality A model that only writes text cannot do much harm or much good. The …