Skip to main content
Plexara
Field notes / governance

Closed by default: least privilege as the starting point

Access control that starts open and gets locked down later never actually finishes. Closing connection access by default means every role sees exactly what it was granted and nothing more.

6-minute readGovernance

The drift problem with open by default

Many systems begin permissive. Every role can reach every connection, and the plan is to tighten things up once the team understands who needs what. That cleanup rarely happens. New connections arrive faster than anyone audits the old ones, and the access map drifts further from intent with every addition.

The risk is quiet because nothing breaks. An analyst role that can technically reach a finance connection it never uses looks fine until the day an agent, acting on that role, follows a question somewhere it should not have gone. Open by default means the safe state is the one you have to remember to create, and memory is not a control.

Closed by default, granted explicitly

Plexara inverts the default. Connection access is closed unless it is explicitly granted. A role sees exactly the connections it has been given and nothing more. The safe state is the starting state, and widening access is a deliberate act rather than the absence of one.

This matters most for agents, because an agent does not exercise judgment about scope the way a person might. It will use whatever it can reach to answer the question in front of it. Bounding what a role can reach is the same as bounding what the agent can do on that role behalf, which is the kind of enforcement that happens at execution time rather than only when the catalog was assembled.

Closed by default also makes the access map legible. When every grant is intentional, the list of what a role can touch is a statement of design, not an archaeological record of everything that was ever switched on.

The New Persona form in the admin portal with a name and display name filled in and no allow or deny patterns yet: a notice reads that no allow patterns means no tools are reachable, and the live Permissions preview reports 0 tools allowed and 17 denied, every tool listed with a blocked marker.
A persona starts with nothing. Until an admin adds an allow pattern, the preview shows every tool denied and says so in plain words. Widening access is something someone does on purpose, and the counts on the right update as they do it.

Why it matters more as you connect more

A platform that connects to one warehouse can get away with loose defaults. A platform whose agent reaches across the whole stack, a warehouse, a catalog, object storage, and a growing set of external APIs, cannot. Each new connection multiplies the number of role-to-resource pairs that an open default would expose by accident.

Closing access by default keeps the blast radius flat as the platform reach grows. Adding a connection does not silently expand what every existing role can do. It adds something that someone must choose to grant, which is exactly the property you want as the surface area increases.

Self-service configuration without widening the blast radius

Tighter defaults often come at the cost of convenience, pushing every change through an engineering queue. Plexara avoids that trade by letting admins configure roles, connections, and access directly, including by asking the assistant to make the change, with every change attributed and logged to the admin who made it.

Plexara pairs closed-by-default access with self-service administration. Every grant is a deliberate act, logged to the admin who made it, so least privilege holds as the resting state without routing each change through an engineering queue. The personas, access, and audit lesson walks through the model in practice.

The Visibility tab for the Trino Query tool in the admin Tools screen: a global kill-switch card with a Hide tool button, a Persona access table listing six personas with an allow decision and the pattern each matched, an Edit persona rules link, and a field to preview the decision for any persona name.
Access is legible from the tool side as well. For any tool, an admin can read which personas reach it and through which pattern, hide it from every client with one switch, or type a persona name to preview the decision before changing anything.

Related reading

governance
Governance

403 - Sharing prompts, and closing the loop with feedback

A procedure is only worth as much as the people who can run it. Plexara distributes a prompt two ways: a direct share to one teammate, or a promotion to a whole role or company through the admin review queue. A shared prompt is live, not a copy. Feedback threads then carry corrections back, with a validation step and a path into the knowledge catalog, and the deprecate-and-supersede lifecycle retires old versions cleanly.

Governance

505 - Next month’s file

The new sheet arrives. Replacing the file’s content writes a new revision, and the registered table keeps reading the old one until it is registered again under the same name; the Scratch Tables page says so. This lesson covers the two cases that look alike and behave differently, moving the table forward, unregistering, what deleting the file does, saving the monthly procedure as a prompt, and the point at which a monthly file needs more than a join, which is where the 600 series begins.

Governance

605 - What a run may do, and the record it leaves

A run presents the roles its author held at the save, every call is authorized at that moment, and narrowing the persona takes effect on the next run. A save refuses a credential-shaped literal and source that does not parse. The dialect has no network, no filesystem, and no clock, so everything a script does is a platform call audited under the script’s own identity. The lifecycle from active to disabled, deprecated, and superseded; who sees what; ownership and an administrator’s transfer; and the administrator’s view of every script and every run.