Agent & CLI Time Entries
Time entries created by agents and the CLI work exactly like manual entries — with two additional fields that provide context about their origin.
The source Field
Every time entry has a source field indicating how it was created:
web— created in the Keito web appcli— created via the Keito CLIapi— created via a direct API callagent— created by an AI agent
This field is set automatically by each integration. Regular CLI timer and manual commands create source=cli entries. Agent lifecycle hooks should use keito time session-record, which creates source=agent entries by default.
The metadata Field
Agent and API entries can include a metadata JSON object with contextual information:
| Field | Description | Example |
|---|---|---|
agent_id | Identifier for the agent | review-bot-01 |
agent_type | Agent platform | claude-code |
session_id | Unique session identifier | 550e8400-e29b-... |
model | LLM model used | claude-opus-4-6 |
Metadata is visible in the entry detail view and can be used for filtering in reports.
The CLI can attach metadata with keito time session-record --metadata, plus convenience flags such as --agent-id, --agent-type, and --skill. For token costs and LLM usage expenses, use the API, Node SDK, or Python SDK.
Visual Indicators
Agent entries display a violet “Agent” badge. CLI entries display an amber “CLI” badge. These badges appear in:
- Day view
- Week view
- Expenses list
- Entry detail view
Approving Agent Time
Agent entries follow the same approval workflow as human entries. When reviewing timesheets, you can:
- Filter by source to review only agent entries.
- Check the metadata to understand what the agent did.
- Approve, reject, or edit as needed.
Related
- Tracking Time — the basics of time entries
- Approving Time — the approval workflow
- Developer Overview — for building agent integrations
- Keito Agent Skill — automatic local agent session tracking