Inspect Agent detail, versions, and channel drafts
This page details the Agent detail page of the platform console: tabs and drafts, deployment details, diagnostics, authentication, versions, and the Slack channel editor with its Secret picker.
Agent tabs change only their panel; Back/Forward restores the selected tab. Unsaved JSON, plugin policies, workspace text, authentication, Slack drawers, Preset variables, and Agent search survive in-document navigation as drafts scoped to user, Namespace, and Agent. Passwords clear; reload warns; sign-out clears drafts.
Cancel, Start over, and Reload discard edits; Refresh retains them. Saving clears drafts. Concurrent changes require reload; unsaved edits block deployment. Pending or uncertain saves require readback, never automatic retries. Backdrop clicks or Escape close the topmost channel, Secret, or plugin editor: discard channel edits, clear Secret inputs, retain plugin selections. Pending channel saves and Secret creation block dismissal.
Open draft edits Configuration JSON and channels; Plugins and
Credentials edit Agent selections and authentication. Plugin browsing
requires exact Agent read/update and a catalog-capable Driver. The curated
catalog needs no Secret. Hosted browsing reads bound codex_pat server-side and
requires caller and Agent ServicePrincipal Secret operate.
Access and credential setup expands the Driver guidance and help links;
the compact reminder stays visible. Search and pagination remain reachable
while the catalog list and plugin details scroll within the picker.
Save plugin selections updates the Agent. Deployment snapshots the saved settings.
The Console confirms a save only when the response identifies the same Agent,
Namespace, and Configuration and matches the submitted selections and approvers.
An incomplete or mismatched success response leaves the draft visible and blocks
saving and deployment until you can reload the saved settings.
Operator-managed credentials saves { "method": "runtime" } for SSH embedded
OpenClaw; OCC neither validates host credentials nor generates metadata for that
binding, but API permissions and topology checks still apply. Selected for service shows activeRevisionId, a selected pointer, not serving health.
Viewing version chooses the draft or a saved version without deploying it.
Load older versions adds the next page and keeps the viewed version.
Deployment contains the newest readable deployment activity, the viewed
version's record, and diagnostics. These panels keep polling across tabs.
Pending work, startup warnings, and incomplete cleanup also show an attention
message with a link above the tabs. Deployment details follows the newest readable deployment. Routine completion
starts folded; pending work, warnings, and cleanup are expanded. When the page shows
before the first record arrives (a read slower than about 2 s), that record fills the
folded row instead, and the summary above shows its outcome; cleanup and warnings still
expand it. Later routine polls preserve your expanded or folded choice through
queued/running updates and transient read failures, including recovery. A final
refusal reveals its error; an explicit refresh of a failed read also reveals the
error, even if unchanged. Refreshing unchanged healthy evidence keeps your choice.
The viewed version retains its own result. A failed shared read clears that
version's older result and shows the error outside the fold, with one visible
alert for the same failure. An older in-flight success cannot restore that result.
Unreadable outcomes remain unknown. Pending reads keep space for visible diagnostics
so routine updates do not move the focused control.
Bootstrap failures retain safe evidence; cleanup refreshes separately.
A failure's card leads the page and folds the details. Its Open vN Logs opens the failed version's Logs panel, showing output or the applicable access or availability message, even from the draft or another version.
Run diagnostics for this version fills Current observations with a
bodyless POST that checks the exact viewed version. It requires Agent
read/operate and exact AgentRevision read. Kubernetes checks cover only
Slack (NOT_CONFIGURED: no Slack channel), never model credentials. Each check
is timestamped succeeded, failed, or unknown; recorded failures stay shown,
and unavailable requests show an error. Results do not change deployment
history, repeat the startup model probe, or prove message delivery.
Save authentication source stores the binding and confirms exact
secret:operate access for the Agent principal on an API-key or Service Accounts
Secret. Grant changes require Installation administer; issued ChatGPT accounts
and operator-managed authentication skip the grant. A member's save sends no
grant: the form stays editable and says that deploying checks the Agent's access
and that an Installation administrator gives it. Opening Credentials as an administrator reads Namespace IAM and blocks
deployment while that grant is missing. A refused or failed grant request offers Retry credential access
without repeating the Agent update. Partial saves survive navigation. Grants do not prove runtime or
provider readiness.
Configuration and Slack summaries show bound Secret names and IDs for the viewed
draft or version. Names require exact same-Namespace Secret read; a denied
read says a Secret is bound and its name is hidden, with the ID in the tooltip, and
missing or failed reads show the ID with Metadata unavailable. For a caller
who is not an Installation administrator, a Secret that the readable Secret list
leaves out is not read: it shows as unavailable, because the caller cannot read
it or it was deleted, with the ID in the tooltip. No Secret
bound means no binding. Values are never read, and metadata does not prove
credential validity.
AgentRevision snapshots cannot be edited, rolled back, or redeployed. Open draft and Edit current Configuration open the saved draft without
changing the viewed snapshot; Deploy new version admits it as another
immutable version. Admission, recorded activation, and activeRevisionId are
separate facts, and startup evidence does not establish live gateway health; see the
deployment guide
and deployment reference.
Channels edits the saved Slack draft. Teams credentials and Bot Framework ingress
require operator setup; Teams has no editor, its settings remain in Configuration
JSON, and it blocks Console deployment. Saving Slack patches values and
includes secretBindings only for changed tokens. Existing plugin allowlists are
extended; omitted ones stay omitted. Channel allowlists remain native
Configuration changes, and shared Configurations can affect other Agents' future
deployments.
Before saving, Agent and Configuration reads verify association and generation; concurrent changes can still race the PATCH. Refresh after a conflict. An unconfirmed PATCH may have succeeded and is never replayed automatically: it shows Outcome unknown and disables channel writes until Refresh loads saved state. Disable Slack changes only the draft, not access, execution, or saved versions.
Slack requires dedicated execution and Kubernetes runtime projection. Socket Mode
uses unresolved SLACK_APP_TOKEN and SLACK_BOT_TOKEN references.
New configurations use allowlist policies. Allowed people in these channels
replaces selected channels' users lists while preserving unrelated settings.
Everyone in these channels writes users: ["*"]; it and specific people are
mutually exclusive. Require a mention is independent of sender access.
Channel edits preserve group policies. Change DM access with
Direct-message policy and Allowed people in direct messages in the same drawer; see
Slack policies.
Model, Harness, and Slack credentials share one searchable Secret picker; the
Slack editor lists
its controls. On the Agent page and in Create Agent, it lists a readable Secret the caller may
not operate disabled with the reason, because a save that binds it is refused. Escape restores the binding, and Create new Secret... stays
available without matches, with Name defaulting to the Agent name and
purpose. A name conflict keeps both inputs and overwrites no Secret. Namespace
readiness errors require refresh.
Creation stores the Secret immediately, under existing Secret IAM checks; cancelling the surrounding editor does not delete it, and values are never read back. An uncertain creation blocks resubmission: the Secret may exist, so refresh and inspect metadata first.
Selections stay staged until Save configuration; Cancel discards them. Saving patches Configuration, then grants Agent access through Namespace IAM; both require caller permission. A failed grant leaves Configuration saved and requires access recovery. A member's session sends no grant and reports that access was not verified until Reload draft. Neither creation nor saving deploys a Secret.
Secret metadata links open new tabs, preserving edits. Save channel changes before editing credentials on the Credentials tab.
The simple editor may reject native channel documents it cannot round-trip,
including non-Socket Slack settings, non-standard credential references, mixed
per-channel mention settings or sender lists, * channel maps, or unsupported
plugin shapes. Inspect those settings in the native Configuration view; edit them
through the API or operator workflow. Slack's standard token references are the
env SecretRefs and the whole ${SLACK_APP_TOKEN} and ${SLACK_BOT_TOKEN}
strings; the editor saves each in its existing form. For any other token, the
card uses Configuration save's term and never shows the value. A string is a
reference only in a form the runtime reads as one, or with a ${ it keeps as
written. An object without a source is an object the Slack Channel Driver
cannot read. Any other value that is not a SecretRef is an inline credential
value.
