Documentation

Agents — Admin Management Page

Route: /admin/agents
Component: admin/src/components/agents_manage.tsx
Nav group: AGENTS

Overview

The Agents page is the admin view of all OAuth 2.1 client registrations for autonomous/agent workloads. It provides a table of every registered agent with inline filtering, a slide-over detail panel, and a create flow with one-time secret reveal.

Table Columns

ColumnDescription
AvatarFirst letter of agent name
NameAgent name + optional description (truncated at 280 px)
Client IDMiddle-truncated to 24 chars
GrantsCount of configured grant types
ScopesCount of configured scopes
CreatedRelative timestamp
Created byEmail/username of the registering user (W1.5 Edit 4 — see below)
Statusactive / inactive chip

Toolbar

Filters the visible rows by agent name or client_id (case-insensitive substring match, client-side).

Status filter

Segmented control: All / Active / Inactive — filters client-side against the already-fetched list.

Creator filter (W1.5 Edit 4)

A <select> dropdown populated from GET /api/v1/users?limit=200. Selecting a user rerequests agents from the server using the created_by_user_id query parameter:

GET /api/v1/agents?limit=200&created_by_user_id=<user_id>

The dropdown displays email, falling back to username, name, or raw id. Selecting the default All creators option removes the filter and fetches the full agent list.

Created by column (W1.5 Edit 4)

Each row in the agent table now shows which user registered the agent. The value is resolved from the created_by_user_id or created_by field on the agent object, looked up against a userMap built from the same users fetch.

The cell renders as a ghost button that, when clicked, navigates to the Users page pre-filtered by that user's ID:

setPage('users', { search: uid })

If no creator is recorded the cell shows .

Slide-over Detail Panel

Clicking any row opens the AgentDetail slide-over with six tabs:

TabContent
ConfigEditable name, description, redirect URIs, grant types, scopes, secret rotation
TokensActive tokens with per-agent revoke-all
ConsentsUsers who have authorized this agent
AuditLast 30 audit events
SecurityDPoP keypair + rotation history
Delegation PoliciesWhich agents this agent may delegate to

Create Flow

New agent button opens a slide-over (CreateAgentSlideOver) with fields for name, description, redirect URIs, grant types, and scopes. On success the response includes a client_secret displayed once (copy-to-clipboard) before the panel closes.

Backend Endpoints

MethodPathDescription
GET/api/v1/agents?limit=200All registered agents
GET/api/v1/agents?limit=200&created_by_user_id=<id>Filter agents by creator
POST/api/v1/agentsRegister a new agent
PATCH/api/v1/agents/:idUpdate agent fields
DELETE/api/v1/agents/:idDeactivate agent + revoke tokens
POST/api/v1/agents/:id/tokens/revoke-allRevoke all tokens for an agent
POST/api/v1/agents/:id/rotate-secretRotate client secret
GET/api/v1/agents/:id/tokens?limit=50List active tokens
GET/api/v1/agents/:id/audit?limit=30Audit log for agent
GET/api/v1/agents/:id/policiesDelegation policies
POST/api/v1/agents/:id/policiesSave delegation policies
GET/api/v1/users?limit=200User list for creator dropdown

CLI Parity

shark agent list is not implemented in the CLI. Use the dashboard or the SDK:

python
from shark_auth import AgentsClient
agents = AgentsClient("https://auth.example.com", token="sk_live_...")
agents.list_agents()