A successful reply is the beginning of verification, not the end. Before relying on an Agent, confirm that its Runtime is healthy, its platform boundaries hold, its activity reaches Agent Barn, and only the intended people can access it.
This guide starts after you have hired an Agent and connected Slack, Telegram, or Discord. It covers runtime health, platform behavior, scope enforcement, telemetry, and access — not only whether the bot produced one reply.
What you will verify
By the end of this guide, you will have confirmed that:
- The Agent Runtime reaches a healthy state
- The Agent responds in an allowed platform location
- Mention and channel boundaries prevent unintended responses
- Conversation, Tool call, and log signals reach Agent Barn
- Agent Barn access is limited to the intended Organization members
You can also verify model cost attribution when LiteLLM cost reporting is configured.
Before you begin
You need:
- A newly hired Agent
- Access to the Organization that owns the Agent
- Access to an allowed Slack channel, Telegram group, or Discord channel
- The platform bot installed or invited to that location
- Permission to view the Agent
- Activity permission, to review health, Conversations, Tool calls, or Logs
- Lifecycle permission, if the Agent still needs to be started
- A non-sensitive test prompt
The Agent creator receives explicit Agent Owner access and can perform every check in this guide. Other users see fewer controls, depending on their effective Agent Access Role.
Required permissions
| Verification task | Required authority |
|---|---|
| Open the Agent | Agent read access |
| View health, Conversations, Tool calls, or Logs | activity.read |
| Start or pause the Agent | Agent lifecycle permission |
| Review or change sharing | Agent access-management permission |
| View Organization-wide costs | Organization Owner or Organization Administrator |
Verification plan
Complete every required check before treating the Agent as ready.
| Check | Requirement | Pass condition |
|---|---|---|
| Runtime health | Required | The Agent displays Working |
| Allowed response | Required | The Agent replies to an explicit mention in an allowed location |
| Mention boundary | Required | The Agent ignores a new unmentioned message in a shared location |
| Conversation telemetry | Required | The inbound prompt and outbound response appear under Conversations |
| Access review | Required | General access and direct assignments match the intended audience |
| Tool-call telemetry | Conditional | An expected read-only Tool call reaches Success |
| Logs | Recommended | Startup and request processing show no unresolved errors |
| Cost attribution | Optional | Model tokens and cost appear under the correct Agent |
If a required check fails, investigate it before adding more Skills, credentials, channels, or users.
Open the Agent
Switch to the Organization that owns the Agent, then select the Agent card on Home.
The Agent detail page shows:
- The Agent name
- The configured model
- A Runtime badge
- A communication-platform badge
- The current status
- The lifecycle and configuration actions available to you
- The activity tabs permitted by your Agent Access Role
Confirm that the displayed name, model, Runtime, and platform match the choices you made while hiring.
The default Agent detail tab is Conversations. Users with activity permission also see Tool calls, Logs, and Work.
Confirm runtime health
Review the status shown beneath the Agent's identity. Each state is labeled in text, so you do not need to rely on the badge color.
| Displayed status | Meaning | Action |
|---|---|---|
| Working | The Runtime is running and its health check succeeds | Continue verification |
| Initializing | Runtime resources are starting, or the platform connection is not ready yet | Wait, then check again |
| Idle | The Agent is stopped | Select Start if you have lifecycle permission |
| Disconnected | The Agent is marked running, but its health endpoint cannot currently confirm a working connection | Review Logs and platform connectivity |
| Needs attention | The Agent is in Error, or its Runtime has crashed | Review the reported reason and the Logs |
Agent Barn persists three Agent states — STOPPED, RUNNING, and ERROR — and presents them as Idle, Working or Initializing, and Needs attention. A failed health check may surface as Disconnected. Health is evaluated for Running or Error Agents when your account holds activity.read, and it refreshes periodically, so allow the Runtime time to create its resources and connect.
If the Agent is Idle, select Start. Starting the Agent:
- Renders the pinned Template
- Loads the pinned Skills
- Decrypts the required Runtime credentials
- Generates a fresh ingest identity
- Creates or refreshes its Runtime resources
- Connects to its configured communication platform
Expected: The Agent displays Working. Continue only once it does.
Optional Kubernetes check
Self-hosted operators can confirm that Agent resources exist in the production namespace:
kubectl get pods \
--namespace agent-farm \
--selector agentbarn.io/component=agentFor staging, use the configured staging namespace, commonly agent-farm-staging. The relevant Agent pod should be running and ready.
The Agent Barn UI remains the preferred place to associate a Runtime with its Agent and to inspect its logs.
Test a platform response
Use an allowed shared channel or group for the first test, and confirm that:
- The Slack app is installed in the workspace and invited to the channel
- The Telegram bot is added to the group
- The Discord bot is invited to the server
- The location is allowed by the Agent's platform configuration
- You are permitted to interact with the bot
Send a deterministic prompt that explicitly mentions the bot:
@agent-bot Respond with exactly: verification-okReplace @agent-bot with the bot's actual Slack handle, Telegram username, or Discord mention.
Record the platform, the channel or group, the approximate send time, and the expected response.
Expected: The Agent returns verification-ok without invoking an unexpected Skill or tool.
Minor formatting differences do not necessarily indicate a connection failure. What matters is that the correct Agent received the request and produced one relevant response.
Test platform boundaries
A reachable Agent must also ignore messages outside its intended scope. Run only the tests that apply to this Agent's configuration.
| Test | Expected result | Applies when |
|---|---|---|
| Allowed location with an explicit mention | The Agent responds | Always |
| Allowed shared location without a mention | The Agent does not respond | All shared channels and groups |
| Disallowed channel or group | The Agent does not respond | Channel or group policy uses an allowlist |
| Direct message while DMs are Off | The Agent does not respond | Direct messages are disabled |
| Direct message while DMs are Open | The Agent may respond without a mention | Direct messages are enabled |
| Message from a disallowed user | The Agent does not respond | User access uses an allowlist |
| Slack thread reply without a fresh mention | The Agent does not respond | Slack |
| Slack thread reply with a fresh mention | The Agent responds | Slack |
Verify mention gating
In the same shared location, send a new message without mentioning the Agent:
verification-no-mentionExpected: The Agent does not respond.
On Telegram or Discord, use a new group message for this negative test. Do not use a direct reply to the Agent's previous message, because platform reply behavior can differ from an unrelated unmentioned message.
Verify Slack thread behavior
If the Agent uses Slack:
- Reply inside the verification thread without mentioning the Agent.
- Confirm that it does not respond.
- Send another thread reply with a fresh mention.
- Confirm that it responds.
Slack requires a fresh explicit mention on every message. Participation earlier in a thread does not keep the Agent engaged automatically.
Verify an allowlist
If channel or group access uses an allowlist, run a negative test from a location that is not allowed. The test passes when the Agent does not respond.
Do not add the Agent to a sensitive or production channel solely to run this test. Use a temporary controlled location instead.
Review Conversations
Return to the Agent detail page and open Conversations. If the verification exchange is not visible, reload the Agent page or reopen the tab after the platform response completes.
The sidebar groups activity into channels or groups and direct messages. Select the location used for the test, then confirm that the conversation contains:
- The inbound verification prompt
- The correct sender or platform identity
- The correct channel or direct-message location
- The outbound Agent response
- The expected occurrence times
- The correct thread grouping, where the platform supplied a thread
The positive test should show both directions:
| Direction | Expected evidence |
|---|---|
| Inbound | The message sent by the human operator |
| Outbound | The response produced by the Agent |
Use the From and To filters if the Agent already has substantial conversation history.
Conversation telemetry proves that the Runtime reported the interaction back to Agent Barn. A platform reply with no corresponding Agent Barn activity indicates a telemetry or ingest problem.
Review Tool calls and Logs
Review Tool calls
Open Tool calls.
The first connection prompt should not require a tool, so for a new General Purpose Agent No tool calls yet can be the correct result.
If the Agent has an assigned Skill, run a separate read-only test appropriate to that Skill. Avoid creating, updating, deleting, sending, or publishing external data during initial verification — for example, ask a repository-enabled Agent to list an allowed repository rather than to modify it.
| Status | Meaning | Verification action |
|---|---|---|
| Pending | The Runtime reported that the call began | Wait for its result |
| Success | The result completed successfully | Confirm the expected tool and scope were used |
| Error | The call failed | Expand the row and inspect its arguments and result |
Tool calls can be filtered by tool name, status, start date and time, and end date and time.
Expand a Tool call to review its arguments and result, then confirm that:
- The expected tool was selected
- The call stayed inside the requested scope
- No unexpected write operation occurred
- The result matches the platform or integration response
Treat Tool-call arguments and results as potentially sensitive operational information.
Review Logs
Open Logs. While the Agent is running, the page shows Live logs, and it reports Streaming once the stream is connected.
Review the lines around:
- Runtime startup
- The platform connection
- The verification request
- Any Tool-call failure
- Health or credential errors
Expected: The Runtime starts with no unresolved error, and the test request produces no repeated connection, authentication, or crash messages.
When an Agent is stopped, Agent Barn may show saved log snapshots from earlier Runtime sessions. Earlier snapshots load as you move toward the beginning of the log history.
Confirm Agent access
Platform routing determines who can communicate with the Agent through Slack, Telegram, or Discord. Agent Access determines who can open and operate the Agent inside Agent Barn.
If you have access-management permission, select Share on the Agent page and confirm that General access matches the intended policy. New Agents default to:
RestrictedWith Restricted access, only users with direct Agent Access can open the Agent. Organization Owners and Organization Administrators retain implicit full authority over every Agent, and they are not listed as direct assignments in the Share dialog.
Review direct access
The Agent creator should appear with explicit Agent Owner access. Review every additional direct assignment:
| Role | Intended authority |
|---|---|
| Agent Viewer | Read Agent information, Conversations, Tool calls, Logs, and Agent-specific costs |
| Agent Editor | Viewer authority, plus configuration, lifecycle, Skills, and credentials |
| Agent Owner | Editor authority, plus deletion and Agent access management |
For an observer helping with verification, Agent Viewer is normally sufficient.
Test access with another member
Where possible, use a separate accepted Organization Member account and verify one of these intended outcomes:
- A member with neither direct nor General access cannot discover or open the Agent
- A member with Agent Viewer access can inspect the Agent and its activity, but cannot start, pause, or configure it
- A member with Agent Editor access can manage configuration and lifecycle, but cannot manage sharing
- A member with Agent Owner access can manage sharing and deletion
If General access is changed to All Organization Members, choose the Agent Access Role that all current and future accepted members should receive. Keep Restricted access unless broad Organization-wide visibility is intentional.
Review cost attribution
Optional This check applies only when LiteLLM cost reporting is configured.
Organization Owners and Organization Administrators can open Costs from the Organization navigation. The page is titled Usage & Billing. The current Organization cost dashboard is limited to those two roles.
Under Agent breakdown, locate the verified Agent. Once it has completed a model request, confirm that the row attributes:
- The correct Agent
- Its current cost-facing status
- The configured model
- Input tokens
- Output tokens
- Total cost
Expand the Agent row to review its per-model breakdown where one is available.
Cost reporting follows a separate path from activity:
Agent model request
↓
LiteLLM
↓
LiteLLM key identity
↓
Agent Barn cost attributionCosts come from LiteLLM and are not calculated from Conversations or Tool calls. An Agent can therefore show conversation telemetry while cost reporting remains unavailable because LiteLLM reporting is not configured. A deployment without a per-Agent LiteLLM key may show no Agent cost row, or zero-valued cost data.
Acceptance checklist
The Agent is ready for further controlled use when every required check passes.
Required
- The Agent displays Working
- An explicit mention in an allowed shared location receives the expected response
- A new unmentioned shared message receives no response
- Allowlisted platform boundaries behave as configured
- Inbound and outbound messages appear under Conversations
- No unexpected Tool call occurs
- General access and direct Agent Access are correct
Recommended
- Live Logs show no unresolved startup or connection errors
- A read-only assigned-Skill test completes successfully
- A second Organization member receives exactly the intended Agent Access Role
- The Agent recovers after one controlled pause and start
Optional operational evidence
- Model usage and cost are attributed to the correct Agent
- Kubernetes resources appear under the expected namespace and stable Agent label
- Monitoring dashboards report the Agent's Runtime health
Troubleshooting
The Agent does not respond
Check health, invite, location, and mention
Confirm that:
- The Agent displays Working
- The correct platform bot was installed or invited
- The message was sent in an allowed channel or group
- The Agent was explicitly mentioned
- The Slack message carries a fresh mention, even inside a thread
- The sender is allowed by the configured platform policy
- Direct messages are enabled, if you are testing through a DM
- The configured model is available
- The platform credentials are still valid
Then open Logs and inspect the lines around the test time.
The Agent remains Initializing
Allow startup time, then inspect the pod
Allow time for the Runtime pod, health server, and platform connection to start. If Initializing persists:
- Open Logs
- Confirm that the platform token is valid
- Confirm that the configured model is available
- Confirm that Kubernetes has sufficient capacity
- Check the Agent pod in the configured namespace
- Look for image-pull, scheduling, volume, or readiness failures
For a production self-hosted installation:
kubectl get pods \
--namespace agent-farm \
--selector agentbarn.io/component=agent The Agent displays Disconnected
Agent Barn cannot confirm a healthy connection
Disconnected means Agent Barn cannot currently confirm a healthy Runtime connection. Review:
- Live Logs
- Platform availability
- Platform token validity
- Kubernetes pod readiness
- Network access from the Runtime to the platform
- Runtime health endpoint availability
Hermes retries eligible platform connection failures. Persistent failures can cause Kubernetes to restart the Agent pod.
The Agent displays Needs attention
Review the error reason, then start again
Review the error reason shown on the Agent page and open Logs. Common causes include:
- Invalid or expired platform credentials
- An unavailable model
- Missing integration credentials
- Kubernetes deployment failure
- Runtime crash
- Platform permissions or Discord intents that were never enabled
Correct the underlying configuration and select Start again. A successful start clears the previous Error state.
The Agent responds without being mentioned
Re-run the negative test correctly, then restart
Make sure the test was:
- Sent in a shared channel or group
- A new message, rather than a direct reply to the Agent
- Sent after the latest configuration was applied and the Agent restarted
Slack should require a fresh mention for every message, including thread replies.
On Telegram or Discord, direct replies can behave differently from unrelated group messages. Repeat the negative test with a new group message.
If the problem remains, review the platform configuration and restart the Agent.
The Agent responds, but Conversations remain empty
Check activity permission and ingest delivery
Reload the Agent page or reopen Conversations after the response completes. If activity remains empty:
- Confirm that your account holds
activity.read - Confirm that the interaction belongs to this Agent
- Confirm that the Runtime can reach the Ingest API
- Review Logs for telemetry delivery failures
- Confirm that the Agent started successfully and received a fresh ingest identity
Do not use the Work tab as the source of truth for verification.
A Tool call remains Pending or enters Error
Expand the call and check the provider side
Expand the Tool call and review its:
- Tool name
- Arguments
- Result
- Associated Logs
- Required Skill version
- Provider credential
- Provider-side permissions
- Allowed resource scope
A Tool result that never reaches Agent Barn can leave the call Pending. Repeat the test only after confirming that doing so cannot create a duplicate external action.
No Logs are available
Check activity permission and session history
Confirm that your account has activity permission.
A newly created Agent that has never started may have no logs. Start the Agent and reopen Logs.
A stopped Agent has log history only when a previous Runtime session produced and saved a snapshot.
The Agent does not appear under Costs
Cost reporting is separate from activity
Confirm that:
- You are an Organization Owner or Organization Administrator
- LiteLLM is configured
- The Agent has a per-Agent LiteLLM key
- The Agent completed a model request
- You selected a date range containing the request
Cost reporting is separate from Conversations and Tool calls. Successful activity telemetry does not guarantee that LiteLLM cost reporting is configured.
Next steps
After verification:
- Review Create, Configure, and Run an Agent
- Replace temporary platform policies with production channel and group allowlists
- Grant the minimum necessary Agent Access Roles
- Add and verify one Skill at a time
- Review the pinned Template and Skill versions
- Configure Shared Credentials for reusable integrations
- Monitor Agent health and logs alongside Conversations, Tool calls, and costs
- Pause the Agent until its production scope has been approved