Troubleshooting the Smallstep Agent
This guide helps you diagnose and resolve common issues with the Smallstep Agent. The agent includes built-in diagnostic tools to help identify problems quickly.
Prerequisites
Before troubleshooting, ensure your system meets the requirements:
- Review System Requirements
- Check Runtime Requirements
- Verify Connectivity Requirements
Using the Doctor Command
The Smallstep Agent includes a doctor command that performs automated health checks and provides diagnostic information. This is the recommended first step when troubleshooting issues.
Running the Doctor Command
On macOS:
step-agent-plugin doctor
On Windows:
& 'C:\Program Files\Smallstep\SmallstepApp\smallstep-agent.exe' doctor
On Linux:
sudo step-agent-plugin doctor
The doctor command runs a series of checks and displays results in a table format:
+------------------------------------------+--------+-------------+
| Check | Status | Description |
+------------------------------------------+--------+-------------+
| Check runtime requirements | PASS | |
| Ping the agent | PASS | |
| Check attestation CA connectivity | PASS | |
| Check API gateway connectivity | PASS | |
| Check mission control connectivity | PASS | |
| Bootstrap certificate authorities | PASS | |
| Verify issued certificates | PASS | |
| Sign with endpoint keys | PASS | |
| Enumerate PKCS#11 objects | PASS | |
+------------------------------------------+--------+-------------+
Understanding Doctor Output
Each check validates a specific aspect of the agent's functionality. A PASS status means the check succeeded, while FAIL indicates a problem that needs attention.
Check Runtime Requirements
What it checks: Verifies that your system has the necessary components for the agent to function:
- TPM 2.0 availability - Ensures the Trusted Platform Module is accessible and can create/delete keys
- systemd (Linux only) - Confirms systemd is running for managing network connections
Common failure reasons:
- No TPM 2.0 module present or enabled in BIOS/UEFI
- TPM is locked or inaccessible
- User lacks permissions to access the TPM (Linux)
- systemd is not the init system (Linux)
Troubleshooting steps:
- Verify TPM 2.0 is enabled in your system BIOS/UEFI settings
- On Linux, check TPM permissions:
ls -l /dev/tpm* - On Linux, ensure the user has read/write access to
/dev/tpmrm0 - On Windows, verify TPM is enabled: Run
tpm.mscor check Device Manager - On Linux, confirm systemd is running:
ps -p 1 -o comm=
Ping the Agent
What it checks: Verifies the agent background service is running and responding to IPC requests.
Common failure reasons:
- Agent service is not running
- Agent service crashed or failed to start
- IPC socket is inaccessible
Troubleshooting steps:
- Check if the agent service is running:
- macOS: Look for Smallstep in Activity Monitor
- Windows: Check Task Manager for the Smallstep Agent process
- Linux: Run
sudo systemctl status step-agent
- Restart the agent service:
- macOS/Windows: Restart from the desktop app or System Settings
- Linux: Run
sudo systemctl restart step-agent
- Check agent logs for error messages:
- Linux: Run
sudo journalctl -u step-agent -n 50
- Linux: Run
Check Attestation CA Connectivity
What it checks: Tests network connectivity to att.smallstep.com (TPM Attestation CA).
Common failure reasons:
- Firewall blocking outbound HTTPS connections
- Proxy configuration required but not set
- Network connectivity issues
- DNS resolution failure
Troubleshooting steps:
- Test connectivity manually:
curl -v https://att.smallstep.com - Check firewall rules allow HTTPS to
att.smallstep.com - If behind a proxy, ensure proxy settings are configured
- Verify DNS resolution:
nslookup att.smallstep.com
Check API Gateway Connectivity
What it checks: Tests network connectivity to gateway.smallstep.com (Smallstep API).
Common failure reasons:
- Same as attestation CA connectivity issues
Troubleshooting steps:
- Test connectivity manually:
curl -v https://gateway.smallstep.com - Check firewall rules allow HTTPS to
gateway.smallstep.com - Review network and proxy configuration
Check Mission Control Connectivity
What it checks: Tests gRPC connectivity to control.infra.smallstep.com:443 (Agent API).
Common failure reasons:
- Firewall blocking port 443 for gRPC traffic
- Deep packet inspection interfering with gRPC
- Proxy not configured for gRPC
Troubleshooting steps:
- Test connectivity manually:
curl -v https://control.infra.smallstep.com - Check firewall rules allow HTTPS/gRPC to
control.infra.smallstep.com - Some corporate firewalls may block gRPC - work with your network team
What it checks: Verifies the agent can retrieve and validate CA root certificates from your Smallstep team's CA.
Common failure reasons:
- Connectivity issues to
<your-team>.ca.smallstep.com - Invalid or expired CA fingerprint in configuration
- Agent not properly registered with your team
Troubleshooting steps:
- Verify connectivity to your CA:
curl -v https://<your-team>.ca.smallstep.com - Check the agent configuration file for correct team name and fingerprint:
- macOS/Windows: Configuration in app settings
- Linux: Check
/etc/step-agent/agent.yaml
- Ensure the device is approved in your Smallstep console
Verify Issued Certificates
What it checks: Validates that all endpoint certificates are currently valid (not expired or not yet valid).
Common failure reasons:
- Certificates expired due to agent being offline
- System clock is incorrect
- Certificate renewal failed
Troubleshooting steps:
- Verify system clock is accurate:
date - If clock was wrong, correct it and restart the agent
- Check when certificates will expire (look in agent logs or desktop app)
- Run doctor with
--renewflag to force certificate renewal (see below)
Sign with Endpoint Keys
What it checks: Tests that the agent can perform cryptographic signing operations with endpoint keys stored in the TPM/Secure Enclave.
Common failure reasons:
- TPM/Secure Enclave access issues
- Keys were deleted or corrupted
- Permission issues accessing keys
Troubleshooting steps:
- Verify TPM/Secure Enclave is accessible (see runtime requirements above)
- Check agent logs for key access errors
- If keys are corrupted, the agent may need to re-register
Enumerate PKCS#11 Objects
What it checks: (Linux/macOS only) Verifies that certificates and keys are accessible via the PKCS#11 interface.
Common failure reasons:
- PKCS#11 server not running
P11_KIT_SERVER_ADDRESSenvironment variable not set correctly- p11-kit not installed or configured
Troubleshooting steps:
- Verify the PKCS#11 socket exists:
ls -l $XDG_RUNTIME_DIR/step-agent/step-agent-pkcs11.sock
- Check the environment variable:
echo $P11_KIT_SERVER_ADDRESS
- Test PKCS#11 manually:
pkcs11-tool --module /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-client.so --list-slots - See PKCS#11 Support for configuration details
Advanced Doctor Options
Force Certificate Renewal
To test certificate renewal as part of the doctor checks, use the --renew flag:
step-agent-plugin doctor --renew
This will attempt to renew all endpoint certificates and report any failures. This is useful when:
- Certificates are close to expiration
- Testing the renewal workflow
- Recovering from a certificate expiration issue
The --renew flag will trigger certificate renewal for all endpoints, which may briefly interrupt services using those certificates.
JSON Output
For scripting or integration with monitoring tools, use the --json flag:
step-agent-plugin doctor --json
This outputs check results in JSON format:
{
"authorities": {
"Description": "",
"State": "PASS"
},
"certificates": {
"Description": "",
"State": "PASS"
},
"network-attestation": {
"Description": "",
"State": "PASS"
},
"network-control": {
"Description": "",
"State": "PASS"
},
"network-gateway": {
"Description": "",
"State": "PASS"
},
"ping": {
"Description": "",
"State": "PASS"
},
"preflight": {
"Description": "",
"State": "PASS"
},
"sign": {
"Description": "",
"State": "PASS"
}
}
Common Issues and Solutions
Agent Won't Start
Symptoms:
- Agent service fails to start
- Desktop app shows "Agent not running"
- Doctor ping check fails
Solutions:
- Check system requirements are met
- Run
step-agent-plugin doctorto identify specific issues - Check agent logs for startup errors
- Restart the system if the TPM is in an inconsistent state
- On Linux, check for conflicting services using the same ports
Network Connectivity Issues
Symptoms:
- All network checks fail in doctor output
- Agent shows "offline" status
- Certificate renewal fails
Solutions:
- Verify internet connectivity:
ping 8.8.8.8 - Test DNS resolution:
nslookup gateway.smallstep.com - Review Connectivity Requirements
- Check corporate firewall and proxy settings
- Ensure all required Smallstep hosts are allowlisted
Certificate Expired or Invalid
Symptoms:
- "Verify issued certificates" check fails
- Applications can't authenticate
- Certificate errors in browser or VPN
Solutions:
- Check system clock is accurate
- Run
step-agent-plugin doctor --renewto force renewal - If agent was offline for extended period, certificates may have expired
- Check agent logs for renewal errors
- Verify connectivity to your team's CA
TPM/Secure Enclave Access Issues
Symptoms:
- Runtime requirements check fails
- "Sign with endpoint keys" check fails
- Agent can't create or access keys
Solutions:
- Windows:
- Run agent with administrator privileges
- Verify TPM is enabled in Device Manager
- Check TPM status:
Get-Tpmin PowerShell
- macOS:
- Ensure app has keychain access permission
- Check System Settings > Privacy & Security > Keychain
- Linux:
- Check TPM permissions:
ls -l /dev/tpmrm0 - Add user to tss group:
sudo usermod -a -G tss $USER - Verify tpm2-tss is installed
- Check TPM permissions:
PKCS#11 Not Working (Linux/macOS)
Symptoms:
- Applications can't access certificates via PKCS#11
- Chrome/Firefox don't see Smallstep certificates
- NetworkManager can't use agent certificates
Solutions:
- Verify PKCS#11 socket exists and is accessible
- Set environment variable correctly:
export P11_KIT_SERVER_ADDRESS=unix:path=$XDG_RUNTIME_DIR/step-agent/step-agent-pkcs11.sock
- Install p11-kit if not present
- Test with
pkcs11-tool --list-slots - See PKCS#11 configuration guide
Getting Help
If you've tried the troubleshooting steps above and still have issues:
- Run doctor command and save the output
- Collect agent logs:
- Linux:
sudo journalctl -u step-agent -n 200 - macOS/Windows: Export logs from the desktop app
- Linux:
- Note your configuration:
- Operating system and version
- Smallstep Agent version (
step-agent-plugin version) - Any error messages or failure descriptions
- Contact Smallstep support with the information above
For security issues or private questions, email support@smallstep.com.
Last updated on January 6, 2026
Introducing
Device Identity
Ensure that only company-owned devices can access your enterprise's most sensitive resources.