OpenClaw Config Errors: Fix Invalid JSON and Unrecognized Keys
OpenClaw Config Errors: Fix Invalid JSON and Unrecognized Keys
By Sarah Chen | February 7, 2026
OpenClaw Config Errors: Fix Invalid JSON and Unrecognized Keys
Configuration errors are the most common cause of OpenClaw startup failures. This guide helps you prevent, diagnose, and fix config issues.
---
Common Error Messages
"Config invalid File: ~/.openclaw/openclaw.json"
What it means: Your config file contains invalid JSON syntax.
Common causes:
Quick fix:
# Validate JSON jq . ~/.openclaw/openclaw.jsonIf invalid, jq will show the error
Fix manually or reset:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.broken openclaw config reset --hard openclaw onboard ---
"Unrecognized keys" Error
What it means: OpenClaw found keys in your config that it doesn't recognize.
Common causes:
Example:
Problem: - skills.entries.blogger: Unrecognized keys: "refresh_token", "client_id", "client_secret" Solution:
# Find invalid keys openclaw config validateRemove invalid entries
openclaw config unset skills.entries.blogger.refresh_token openclaw config unset skills.entries.blogger.client_id openclaw config unset skills.entries.blogger.client_secretOr use a separate config file for credentials
See: Blogger credentials in ~/.openclaw/blogger.json
---
Validating Your Configuration
Command Line Validation
# Check config syntax jq . ~/.openclaw/openclaw.json > /dev/null && echo "Valid JSON"Pretty print (will fail if invalid)
cat ~/.openclaw/openclaw.json | jq .Find specific errors
cat ~/.openclaw/openclaw.json | jq . 2>&1 | head -20 OpenClaw Validation Commands
# Full validation openclaw config validateCheck specific section
openclaw config get agents.defaultsView all errors
openclaw doctor --verbose Schema Validation
OpenClaw uses JSON Schema for config validation:
# Check against schema openclaw config schema-validateView schema
openclaw config schema ---
Preventing Config Errors
Use CLI Instead of Manual Edit
Bad:
nano ~/.openclaw/openclaw.json # Manual editing → errors Good:
openclaw config set agents.defaults.model "claude-sonnet-4" openclaw config set channels.telegram.enabled true Use jq for Complex Changes
# Add new key safely cat ~/.openclaw/openclaw.json | jq '.agents.defaults.model = "claude-sonnet-4"' > /tmp/new_config.json mv /tmp/new_config.json ~/.openclaw/openclaw.json Backup Before Changes
# Create timestamped backup cp ~/.clawclaw/openclaw.json ~/.openclaw/openclaw.json.$(date +%Y%m%d-%H%M%S) ---
Recovery Procedures
Scenario 1: Minor JSON Error
# Find the error jq . ~/.openclaw/openclaw.jsonCommon fixes:
- Remove trailing commas
- Add missing quotes
- Balance brackets
Edit manually
nano ~/.openclaw/openclaw.jsonValidate
jq . ~/.openclaw/openclaw.json Scenario 2: Unrecognized Keys
# Identify bad keys openclaw config validate 2>&1 | grep -i "unrecognized"Remove bad keys
openclaw config unset Example:
openclaw config unset skills.entries.blogger.client_id Scenario 3: Complete Config Corruption
# Option A: Reset to defaults openclaw config reset --hardOption B: Restore from backup
ls ~/.openclaw/openclaw.json.* # Find backup cp ~/.openclaw/openclaw.json.20260207-120000 ~/.openclaw/openclaw.jsonOption C: Start fresh onboarding
openclaw onboard Scenario 4: Skill Config Breaking Gateway
Problem: Skill config contains unrecognized keys and breaks startup.
Solution: Move skill credentials to separate files.
# Don't put this in openclaw.json: { "skills": { "entries": { "blogger": { "client_id": "...", "client_secret": "...", "refresh_token": "..." } } } }Instead, create separate config:
cat > ~/.openclaw/blogger.json << 'EOF' { "client_id": "your_client_id", "client_secret": "your_client_secret", "refresh_token": "your_refresh_token" } EOF chmod 600 ~/.openclaw/blogger.json ---
Common Configuration Mistakes
1. Trailing Commas
Invalid:
{ "agents": { "defaults": { "model": "claude-sonnet-4", } // ← Trailing comma not allowed } Valid:
{ "agents": { "defaults": { "model": "claude-sonnet-4" } } } 2. Wrong Enum Values
Invalid:
{ "gateway": { "bind": "invalid" // Must be: loopback, lan, tailnet } } Valid:
{ "gateway": { "bind": "loopback" } } 3. Type Mismatches
Invalid:
{ "agents": { "defaults": { "maxTokens": "4000" // String instead of number } } } Valid:
{ "agents": { "defaults": { "maxTokens": 4000 // Number } } } 4. Using Old Schema
# Old format (no longer works): openclaw config set gateway.port 18789New format:
openclaw config set gateway.bind "lan" ---
Config File Best Practices
1. Use CLI for All Changes
# Set values openclaw config set Get values
openclaw config get Unset values
openclaw config unset View all
openclaw config get 2. Keep Separate Files for Sensitive Data
# API keys in environment export OPENAI_API_KEY="sk-..."Or in separate files with 600 permissions
cat > ~/.openclaw/credentials.json chmod 600 ~/.openclaw/credentials.json 3. Document Your Changes
{ "meta": { "lastModified": "2026-02-07", "modifiedBy": "Sarah", "notes": "Added Claude Sonnet as default model" } } 4. Use Version Control
# Initialize git in config directory cd ~/.openclaw git init git add openclaw.json git commit -m "Initial config"Track changes
git diff git log --oneline ---
Validation Script
Create a helper script for daily checks:
#!/bin/bash save as: ~/bin/validate-openclaw-config.sh
echo "=== OpenClaw Config Validator ==="
Check JSON validity
echo -n "JSON syntax: " if jq . ~/.openclaw/openclaw.json > /dev/null 2>&1; then echo "✅ Valid" else echo "❌ Invalid" echo "Errors:" jq . ~/.openclaw/openclaw.json 2>&1 | head -10 fiCheck for common issues
echo -n "No trailing commas: " if grep -q ',\s*}' ~/.openclaw/openclaw.json; then echo "⚠️ Found trailing commas" else echo "✅ Clean" fiValidate with OpenClaw
echo -n "OpenClaw validation: " if openclaw config validate 2>&1 | grep -q "error"; then echo "❌ Issues found" openclaw config validate else echo "✅ Passed" fiecho "=== Done ==="
Run it:
chmod +x ~/bin/validate-openclaw-config.sh ~/bin/validate-openclaw-config.sh ---
Further Reading
---
Related Articles:
Tags: OpenClaw, AI, Tutorial
Comments
Post a Comment