Teleport records every significant action in its audit log — SSH session starts and ends, user logins, Kubernetes API calls, database queries, access request decisions, and more. Each record is a JSON object written to a configurable backend, making it straightforward to stream events into SIEM tools, object storage, or time-series databases. Every audit event contains anDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/gravitational/teleport/llms.txt
Use this file to discover all available pages before exploring further.
event field with a dot-separated type identifier (e.g., session.start, user.login) and a code field with a unique alphanumeric code (e.g., T2000I). Codes ending in I are informational, W are warnings, and E are errors or failures.
Audit log storage
By default, Teleport writes audit events to the filesystem under<data_dir>/log/. Configure an alternative backend in auth_service.audit_events_uri:
Local Filesystem
Events are written as JSONL files under
data_dir/log/. Suitable for small self-hosted deployments. No extra configuration required.DynamoDB
Events are stored in a DynamoDB table. Supports automatic TTL and scales with cluster size. Configure with
dynamodb://table-name.Firestore
Events are stored in a Google Cloud Firestore collection. Configure with
firestore://collection-name.S3 / GCS
Events are stored as objects in S3 or Google Cloud Storage. Best for long-term, cost-effective archival. Configure with
s3://bucket-name/prefix.teleport.yaml configuration for multiple backends:
Teleport Cloud automatically configures audit log storage for you. The settings above apply only to self-hosted clusters.
Common event types
Session events
session.start — SSH or Kubernetes session initiated
session.start — SSH or Kubernetes session initiated
Emitted when a user starts an interactive SSH or exec session.
| Field | Description |
|---|---|
event | session.start |
code | T2000I |
user | Teleport username. |
login | OS login used on the SSH node. |
sid | Session ID (UUID). |
server_id | UUID of the SSH node. |
server_hostname | Hostname of the SSH node. |
namespace | Always default. |
size | Terminal dimensions at start (cols:rows). |
time | RFC 3339 timestamp. |
uid | Unique event ID. |
session.end — session completed
session.end — session completed
Emitted when a session ends, including total duration, participants, and whether recording is available.
| Field | Description |
|---|---|
event | session.end |
code | T2004I |
session_start | Session start time (RFC 3339). |
session_stop | Session end time (RFC 3339). |
participants | List of Teleport usernames in the session. |
interactive | Whether the session had an interactive PTY. |
enhanced_recording | Whether BPF recording was active. |
session.command — command executed in session (enhanced recording)
session.command — command executed in session (enhanced recording)
Emitted for each command run inside a session when BPF-based enhanced recording is enabled.
| Field | Description |
|---|---|
event | session.command |
code | T4000I |
program | Binary name (e.g., bash, ping). |
path | Full path to the binary. |
argv | Command arguments. |
pid | Process ID. |
ppid | Parent process ID. |
return_code | Exit code. |
cgroup_id | Cgroup ID used to attribute the command to the session. |
Authentication events
user.login — user authentication attempt
user.login — user authentication attempt
Emitted on every login attempt, regardless of outcome.
Failed login example:
| Field | Description |
|---|---|
event | user.login |
code | T1000I (local success), T1000W (local failure), T1001I (SSO), T1001W (SSO failure). |
method | Authentication method: local, oidc, saml, github, headless. |
success | true or false. |
error | Error message on failure. |
Database events
db.session.start — database session started
db.session.start — database session started
db.session.query — SQL or MongoDB query executed
db.session.query — SQL or MongoDB query executed
Kubernetes events
kube.request — Kubernetes API call
kube.request — Kubernetes API call
Emitted for every Kubernetes API request proxied through Teleport.
| Field | Description |
|---|---|
kubernetes_cluster | Name of the Kubernetes cluster. |
verb | HTTP verb: GET, POST, PATCH, DELETE, etc. |
request_path | Full API path. |
resource_kind | Kubernetes resource kind (e.g., pods). |
resource_namespace | Kubernetes namespace. |
resource_name | Resource name. |
response_code | HTTP status code. |
Application events
app.session.start — application session started
app.session.start — application session started
Access Request events
access_request.create / update — Access Request lifecycle
access_request.create / update — Access Request lifecycle
Event type quick reference
| Event | Code (success) | Description |
|---|---|---|
session.start | T2000I | SSH/Kubernetes session started. |
session.end | T2004I | Session ended. |
session.command | T4000I | Command executed (enhanced recording). |
session.network | T4002I | Network connection in session (enhanced recording). |
user.login | T1000I | User authenticated. |
user.create | T1002I | User created. |
user.delete | T1004I | User deleted. |
db.session.start | TDB00I | Database session started. |
db.session.end | TDB01I | Database session ended. |
db.session.query | TDB02I | Database query executed. |
kube.request | T3009I | Kubernetes API request. |
app.session.start | T2007I | Application session started. |
app.session.end | T2011I | Application session ended. |
windows.desktop.session.start | TDP00I | Windows RDP session started. |
windows.desktop.session.end | TDP01I | Windows RDP session ended. |
access_request.create | T5000I | Access Request created. |
access_request.update | T5001I | Access Request approved or denied. |
role.created | T9000I | Role created. |
role.deleted | T9001I | Role deleted. |
github.created | T8000I | GitHub connector created. |
oidc.created | T8100I | OIDC connector created. |
saml.created | T8200I | SAML connector created. |
bot.join | TJ001I | Machine ID bot joined the cluster. |
cert.create | TC000I | Certificate issued. |
