langsmith-fetch
Debug LangChain and LangGraph agents by fetching execution traces from LangSmith Studio. Use when debugging agent behavior, investigating errors, analyzing tool calls, checking memory operations, or examining agent performance. Automatically fetches recent traces and analyzes execution patterns. Requires langsmith-fetch CLI installed.
LangSmith Fetch - Agent Debugging Skill
Debug LangChain and LangGraph agents by fetching execution traces directly from LangSmith Studio in your terminal.
When to Use This Skill
Automatically activate when user mentions:
Prerequisites
1. Install langsmith-fetch
pip install langsmith-fetch2. Set Environment Variables
export LANGSMITH_API_KEY="your_langsmith_api_key"
export LANGSMITH_PROJECT="your_project_name"Verify setup:
echo $LANGSMITH_API_KEY
echo $LANGSMITH_PROJECTCore Workflows
Workflow 1: Quick Debug Recent Activity
When user asks: "What just happened?" or "Debug my agent"
Execute:
langsmith-fetch traces --last-n-minutes 5 --limit 5 --format prettyAnalyze and report:
Example response format:
Found 3 traces in the last 5 minutes:Trace 1: ✅ Success
Agent: memento
Tools: recall_memories, create_entities
Duration: 2.3s
Tokens: 1,245 Trace 2: ❌ Error
Agent: cypher
Error: "Neo4j connection timeout"
Duration: 15.1s
Failed at: search_nodes tool Trace 3: ✅ Success
Agent: memento
Tools: store_memory
Duration: 1.8s
Tokens: 892 💡 Issue found: Trace 2 failed due to Neo4j timeout. Recommend checking database connection.
Workflow 2: Deep Dive Specific Trace
When user provides: Trace ID or says "investigate that error"
Execute:
langsmith-fetch trace <trace-id> --format jsonAnalyze JSON and report:
Example response format:
Deep Dive Analysis - Trace abc123Goal: User asked "Find all projects in Neo4j"
Execution Flow:
✅ search_nodes(query: "projects")
→ Found 24 nodes❌ get_node_details(node_id: "proj_123")
→ Error: "Node not found"
→ This is the failure point⏹️ Execution stopped Root Cause:
The search_nodes tool returned node IDs that no longer exist in the database,
possibly due to recent deletions.
Suggested Fix:
Add error handling in get_node_details tool
Filter deleted nodes in search results
Update cache invalidation strategy Token Usage: 1,842 tokens ($0.0276)
Execution Time: 8.7 seconds
Workflow 3: Export Debug Session
When user says: "Save this session" or "Export traces"
Execute:
# Create session folder with timestamp
SESSION_DIR="langsmith-debug/session-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$SESSION_DIR"Export traces
langsmith-fetch traces "$SESSION_DIR/traces" --last-n-minutes 30 --limit 50 --include-metadataExport threads (conversations)
langsmith-fetch threads "$SESSION_DIR/threads" --limit 20Report:
✅ Session exported successfully!Location: langsmith-debug/session-20251224-143022/
Traces: 42 files
Threads: 8 files You can now:
Review individual trace files
Share folder with team
Analyze with external tools
Archive for future reference Session size: 2.3 MB
Workflow 4: Error Detection
When user asks: "Show me errors" or "What's failing?"
Execute:
# Fetch recent traces
langsmith-fetch traces --last-n-minutes 30 --limit 50 --format json > recent-traces.jsonSearch for errors
grep -i "error\|failed\|exception" recent-traces.jsonAnalyze and report:
Example response format:
Error Analysis - Last 30 MinutesTotal Traces: 50
Failed Traces: 7 (14% failure rate)
Error Breakdown:
Neo4j Connection Timeout (4 occurrences)
- Agent: cypher
- Tool: search_nodes
- First occurred: 14:32
- Last occurred: 14:45
- Pattern: Happens during peak loadMemory Store Failed (2 occurrences)
- Agent: memento
- Tool: store_memory
- Error: "Pinecone rate limit exceeded"
- Occurred: 14:38, 14:41Tool Not Found (1 occurrence)
- Agent: sqlcrm
- Attempted tool: "export_report" (doesn't exist)
- Occurred: 14:35💡 Recommendations:
Add retry logic for Neo4j timeouts
Implement rate limiting for Pinecone
Fix sqlcrm tool configuration Common Use Cases
Use Case 1: "Agent Not Responding"
User says: "My agent isn't doing anything"
Steps:
langsmith-fetch traces --last-n-minutes 5 --limit 5- Tracing might be disabled
- Check:
LANGCHAIN_TRACING_V2=true in environment- Check:
LANGCHAIN_API_KEY is set- Verify agent actually ran
- Review for errors
- Check execution time (hanging?)
- Verify tool calls completed
Use Case 2: "Wrong Tool Called"
User says: "Why did it use the wrong tool?"
Steps:
Use Case 3: "Memory Not Working"
User says: "Agent doesn't remember things"
Steps:
langsmith-fetch traces --last-n-minutes 10 --limit 20 --format raw | grep -i "memory\|recall\|store"- Were memory tools called?
- Did recall return results?
- Were memories actually stored?
- Are retrieved memories being used?
Use Case 4: "Performance Issues"
User says: "Agent is too slow"
Steps:
langsmith-fetch traces ./perf-analysis --last-n-minutes 30 --limit 50 --include-metadata- Execution time per trace
- Tool call latencies
- Token usage (context size)
- Number of iterations
- Slowest operations
Output Format Guide
Pretty Format (Default)
langsmith-fetch traces --limit 5 --format prettyUse for: Quick visual inspection, showing to users
JSON Format
langsmith-fetch traces --limit 5 --format jsonUse for: Detailed analysis, syntax-highlighted review
Raw Format
langsmith-fetch traces --limit 5 --format rawUse for: Piping to other commands, automation
Advanced Features
Time-Based Filtering
# After specific timestamp
langsmith-fetch traces --after "2025-12-24T13:00:00Z" --limit 20Last N minutes (most common)
langsmith-fetch traces --last-n-minutes 60 --limit 100Include Metadata
# Get extra context
langsmith-fetch traces --limit 10 --include-metadataMetadata includes: agent type, model, tags, environment
Concurrent Fetching (Faster)
# Speed up large exports
langsmith-fetch traces ./output --limit 100 --concurrent 10Troubleshooting
"No traces found matching criteria"
Possible causes:
Solutions:
# 1. Try longer timeframe
langsmith-fetch traces --last-n-minutes 1440 --limit 502. Check environment
echo $LANGSMITH_API_KEY
echo $LANGSMITH_PROJECT3. Try fetching threads instead
langsmith-fetch threads --limit 104. Verify tracing is enabled in your code
Check for: LANGCHAIN_TRACING_V2=true
"Project not found"
Solution:
# View current config
langsmith-fetch config showSet correct project
export LANGSMITH_PROJECT="correct-project-name"Or configure permanently
langsmith-fetch config set project "your-project-name"Environment variables not persisting
Solution:
# Add to shell config file (~/.bashrc or ~/.zshrc)
echo 'export LANGSMITH_API_KEY="your_key"' >> ~/.bashrc
echo 'export LANGSMITH_PROJECT="your_project"' >> ~/.bashrcReload shell config
source ~/.bashrcBest Practices
1. Regular Health Checks
# Quick check after making changes
langsmith-fetch traces --last-n-minutes 5 --limit 52. Organized Storage
langsmith-debug/
├── sessions/
│ ├── 2025-12-24/
│ └── 2025-12-25/
├── error-cases/
└── performance-tests/3. Document Findings
When you find bugs:
error-cases/ folder4. Integration with Development
# Before committing code
langsmith-fetch traces --last-n-minutes 10 --limit 5If errors found
langsmith-fetch trace <error-id> --format json > pre-commit-error.jsonQuick Reference
# Most common commandsQuick debug
langsmith-fetch traces --last-n-minutes 5 --limit 5 --format prettySpecific trace
langsmith-fetch trace <trace-id> --format prettyExport session
langsmith-fetch traces ./debug-session --last-n-minutes 30 --limit 50Find errors
langsmith-fetch traces --last-n-minutes 30 --limit 50 --format raw | grep -i errorWith metadata
langsmith-fetch traces --limit 10 --include-metadataResources
Notes for Claude
langsmith-fetch is installed before running commands--format pretty for human-readable output--format json when you need to parse and analyze dataVersion: 0.1.0
Author: Ahmad Othman Ammar Adi
License: MIT
Repository: https://github.com/OthmanAdi/langsmith-fetch-skill