Skip to content
ChatGPT Work Alternative

ChatGPT Work permissions vs open-source agent governance

An admin console governs the people in a workspace; the open-source Kortix also governs what each agent may reach. Permissions are per-resource, every connector call runs under Allow, Ask or Block, and session work reaches main through a change request a person approves, unless an admin granted the merge capability.

Manifest

A scoped agent in the manifest

kortix.yaml
agents:  release-bot:    file: agents/release-bot.md    sandbox: ml    connectors: [github]    kortix_permissions: [project.gitops.push]    secrets: [GITHUB_AGENT_TOKEN]
Source: kortix.com/docs/project/manifest

A real kortix.yaml excerpt. kortix_permissions narrows what this agent may do; the change request is the human gate.

What an admin console controls

An admin console controls people and the product surfaces their role can reach. OpenAI's roles and workspace permissions page names six control boundaries that a request must pass: the ChatGPT workspace, local clients, hosted Codex workflows, the Platform API, plugins, and the connected systems themselves (checked October 2026). Inside the workspace boundary, a seat decides which surfaces a member can use, and a built-in role decides administrative authority. The Owner role manages workspace-wide settings, the Admin role manages supported operations and groups, the Member role has no administrative rights, and the Analytics Viewer role can access workspace analytics.

Only workspace owners configure role-based access control and create custom roles. An owner assigns a custom role through a group or directly to one member, and groups can be managed by hand or synced through SCIM. For each eligible permission, the workspace default sets the baseline, and a role either grants access with On or withholds it with Off. A plugin becoming available in a workspace does not grant access to data: the connected service still decides which data the signed-in account can read. OpenAI's own ChatGPT Work admin FAQ describes governance as three layers, one for who can use Work on each surface, one for who can build, publish, share, schedule, or configure reusable agents, and one for the local runtime.

What governs an agent's reach

Kortix separates what a person may do from what an agent may touch. An agent is agents/<name>.md (behavior) plus an agents.<name> block in kortix.yaml (governance). Access comes as roles: one assignment binds one principal, a person, a group, or an agent's service account, to one role at one scope, and an optional object narrows that assignment to a single agent, skill, secret, app, or trigger.

An agent carries a second, separate binding: the Kortix permissions its manifest declares under agents.<name>.kortix_permissions. A session can only do what both allow, and the two bindings never widen each other. Per-resource permissions for people and agents. Roles, groups, and an audit trail. Every connector call runs under one of three policies, shown as Allow, Ask, or Block. Approval holds the call; the agent's turn pauses and resumes. Approval gates are off until you set them. The connectors and automation page covers how a connector is declared in kortix.yaml and how those policies attach to each call, down to the arguments.

The change-request gate

A session runs on its own branch, and session work reaches main through a change request. Merge is default-deny for agents. A session can never merge a change request it opened itself, whatever it has been granted. The agent commits on the session branch, pushes the branch, opens the change request with kortix cr open, and stops. A person reviews the diff and merges.

Nothing merges itself: work reaches main through a change request a person approves, unless an admin granted the merge capability. Opening and merging are separate permissions, project.gitops.push and project.gitops.merge, so a token can open change requests without the power to merge them. Kortix permissions are repository state in the manifest, so the same access model travels with the repository. Run it on Kortix Cloud, in your VPC, or on your own on-prem network, and the self-hosting setup keeps the grants in the repo you control.

FAQ

Questions about governance.

Can I see who did what in Kortix?

Every action is recorded. Reading, exporting and streaming the audit log depend on the plan.

Do agents get the same permissions as people?

A session can only do what both allow: the role bound to the agent's service account and the Kortix permissions its manifest declares. The two never widen each other.

Are connector calls approved by default?

No. Approval gates you set. Off until you set them. Until a rule is set, a connector call runs without a pause.

Where do an agent’s permissions live?

Kortix permissions are repository state in the manifest, a file in the project's git repo. Roles, groups, and assignments are account state.

Give every agent a scoped reach and a human merge gate.

Open source, with the grants in a repo you own. Self-host free or use Kortix Cloud.

Open source · Any model, your keys · Self-host, VPC, or on-prem