AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The render-debug skill provides a structured approach to troubleshooting Render services. It guides users through identifying failed services, retrieving relevant logs, analyzing performance metrics, and querying database state to pinpoint root causes like configuration errors, resource exhaustion, or connection issues. The skill integrates with Render's MCP tools to automate data collection and suggests common fixes for identified error patterns.
What it does
- Lists and inspects status of Render services and deployments
- Retrieves and filters build, runtime, and HTTP error logs
- Analyzes CPU, memory, and latency metrics to identify performance bottlenecks
- Queries PostgreSQL instances to diagnose connection and query performance issues
- Maps common error patterns to actionable remediation steps
- Provides workflows for verifying fixes through log and metric validation
When to use it
- When a Render deployment fails to complete
- When a service crashes or fails to start
- When application health checks are timing out
- When users report production errors or performance degradation
- When diagnosing database connection or query latency problems
Advantages
- Standardizes the debugging process for Render environments
- Reduces manual log searching by targeting specific error types
- Provides direct access to database diagnostics via SQL queries
- Offers clear remediation paths for common configuration and resource issues
Usage examples
- “My service is failing to deploy on Render, can you help?”
- The agent will list your services, identify the failed one, retrieve the relevant build logs, and analyze them against known error patterns to suggest a fix.
- “My app is running very slowly, check the metrics.”
- The agent will fetch CPU, memory, and HTTP latency metrics for the service to determine if resource constraints or slow database queries are the cause.
- “I am getting ECONNREFUSED errors from my database.”
- The agent will check the database status, analyze active connection counts, and query pg_stat_activity to identify potential connection pool exhaustion.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/render-oss/render-debug/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip render-debug.zip -d .agents/skills
Documentation by Render
Debug Render Deployments
Analyze deployment failures using logs, metrics, and database queries. Identify root causes and apply fixes.
When to Use This Skill
Activate this skill when:
Deployment fails on Render
Service won't start or keeps crashing
User mentions errors, logs, or debugging
Health checks are timing out
Application errors in production
Performance issues (slow responses)
Database connection problems
Render Access
Before reading logs, metrics, or database state, follow references/render-access.md to establish access and verify the intended workspace. Prefer MCP when available; the CLI can provide logs and deploy status, while metrics and structured database queries require MCP.
Debugging Workflow
When the failure involves configuration or secrets, read references/environment-variables.md before inspecting or changing service variables.
When the failure involves deploy state, rollout, health checks, restart, rollback, or shutdown, read references/deployments.md before diagnosing it.
Step 1: Identify Failed Service
list_services()If MCP isn't configured, ask whether to set it up (preferred) or continue with CLI. Then proceed.
Look for services with failed status. Get details:
get_service(serviceId: "<id>")Step 2: Retrieve Logs
Build/Deploy Logs (most failures):
list_logs(resource: ["<service-id>"], type: ["build"], limit: 200)Runtime Error Logs:
list_logs(resource: ["<service-id>"], level: ["error"], limit: 100)Search for Specific Errors:
list_logs(resource: ["<service-id>"], text: ["KeyError", "ECONNREFUSED"], limit: 50)HTTP Error Logs:
list_logs(resource: ["<service-id>"], statusCode: ["500", "502", "503"], limit: 50)Step 3: Analyze Error Patterns
Match log errors against known patterns:
| Error | Log Pattern | Common Fix |
|---|---|---|
| MISSING_ENV_VAR | KeyError, not defined | Add to render.yaml or update_environment_variables |
| PORT_BINDING | EADDRINUSE | Use 0.0.0.0:$PORT |
| MISSING_DEPENDENCY | Cannot find module | Add to package.json/requirements.txt |
| DATABASE_CONNECTION | ECONNREFUSED :5432 | Check DATABASE_URL, DB status |
| HEALTH_CHECK | Health check timeout | Add /health endpoint, check port binding |
| OUT_OF_MEMORY | heap out of memory, exit 137 | Optimize memory or upgrade plan |
| BUILD_FAILURE | Command failed | Fix build command or dependencies |
Full error catalog: references/error-patterns.md
If errors repeat across deploys: Switch from incremental fixes to a broader sweep. Scan the codebase/config for all likely causes in that error class (related env vars, build config, dependencies, or type errors) and address them together before the next redeploy.
Step 4: Check Metrics (Performance Issues)
For crashes, slow responses, or resource issues:
get_metrics(
resourceId: "<service-id>",
metricTypes: ["cpu_usage", "memory_usage", "memory_limit"]
)get_metrics(
resourceId: "<service-id>",
metricTypes: ["http_latency"],
httpLatencyQuantile: 0.95
)Detailed metrics guide: references/metrics-debugging.md
Step 5: Debug Database Issues
For database-related errors:
# Check database status
list_postgres_instances()
# Check connections
get_metrics(resourceId: "<postgres-id>", metricTypes: ["active_connections"])
# Query directly
query_render_postgres(
postgresId: "<postgres-id>",
sql: "SELECT state, count(*) FROM pg_stat_activity GROUP BY state"
)Detailed database guide: references/database-debugging.md
Step 6: Apply Fix
For environment variables:
update_environment_variables(
serviceId: "<service-id>",
envVars: [{"key": "MISSING_VAR", "value": "value"}]
)For code changes:
Edit the source file
Commit and push
Deploy triggers automatically (if auto-deploy enabled)
Step 7: Verify Fix
# Check deploy status
list_deploys(serviceId: "<service-id>", limit: 1)
# Check for new errors
list_logs(resource: ["<service-id>"], level: ["error"], limit: 20)
# Check metrics
get_metrics(resourceId: "<service-id>", metricTypes: ["http_request_count"])Quick Workflows
Pre-built debugging sequences for common scenarios:
| Scenario | Workflow |
|---|---|
| Deploy failed | list_deploys → list_logs(type: build) → fix → redeploy |
| App crashing | list_logs(level: error) → get_metrics(memory) → fix |
| App slow | get_metrics(http_latency) → get_metrics(cpu) → query_postgres |
| DB connection | list_postgres → get_metrics(connections) → query_postgres |
| Post-deploy check | list_deploys → list_logs(error) → get_metrics |
Detailed workflows: references/quick-workflows.md
Quick Reference
MCP Tools
# Service Discovery
list_services()
get_service(serviceId: "<id>")
list_postgres_instances()
# Logs
list_logs(resource: ["<id>"], level: ["error"], limit: 100)
list_logs(resource: ["<id>"], type: ["build"], limit: 200)
list_logs(resource: ["<id>"], text: ["search"], limit: 50)
# Metrics
get_metrics(resourceId: "<id>", metricTypes: ["cpu_usage", "memory_usage"])
get_metrics(resourceId: "<id>", metricTypes: ["http_latency"], httpLatencyQuantile: 0.95)
# Database
query_render_postgres(postgresId: "<id>", sql: "SELECT ...")
# Deployments
list_deploys(serviceId: "<id>", limit: 5)
# Environment Variables
update_environment_variables(serviceId: "<id>", envVars: [{key, value}])CLI Commands (Fallback)
render services -o json
render logs -r <service-id> --level error -o json
render logs -r <service-id> --tail -o text
render deploys create <service-id> --waitReferences
Render access: references/render-access.md
Environment variables: references/environment-variables.md
Compute plans: references/compute-plans.md
Deployments: references/deployments.md
Error patterns: references/error-patterns.md
Metrics debugging: references/metrics-debugging.md
Database debugging: references/database-debugging.md
Quick workflows: references/quick-workflows.md
Log analysis: references/log-analysis.md
Troubleshooting: references/troubleshooting.md
Related Skills
render-deploy — Deploy new applications to Render
render-monitor — Ongoing service health monitoring
render-mcp — MCP server setup and capability discovery
<!-- shared:documentation-retrieval -->
Current documentation retrieval
Whenever this skill directs you to consult current Render documentation:
Retrieve the linked Markdown document directly with an available URL-fetching tool or HTTP client, such as
curl. Do not substitute web-search summaries for the document.Confirm that retrieval succeeded and returned the expected document, then read its contents. Saving a file or printing its path is not sufficient.
If the request fails or your tool cannot read the Markdown response, open and read the linked HTML version instead.
If neither version can be retrieved, disclose that the current reference is unavailable and follow any topic-specific fallback in the skill. Use bundled guidance only for stable constraints, and do not guess at changeable platform details.
When a task requires multiple references, apply this workflow to each one and distinguish the documents you verified from those that remain unavailable.
<!-- /shared:documentation-retrieval -->
Files
- ATTRIBUTION.mdAdded by AutoGineer878 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md8.3 KiB
- references/compute-plans.md2.3 KiB
- references/database-debugging.md8.8 KiB
- references/deployments.md7.9 KiB
- references/environment-variables.md4.5 KiB
- references/error-patterns.md18.7 KiB
- references/log-analysis.md9.9 KiB
- references/metrics-debugging.md6.4 KiB
- references/quick-workflows.md6.2 KiB
- references/render-access.md4.7 KiB
- references/troubleshooting.md12.3 KiB
references/error-patterns.md
Render Deployment Error Patterns
Comprehensive catalog of common deployment errors on Render, their causes, and fixes. Organized by frequency and category.
MCP Quick Detection
Use these MCP queries to quickly detect each error pattern:
| Error Type | MCP Detection Query |
|---|---|
| Missing Env Var | list_logs(resource: ["<id>"], text: ["KeyError", "not defined", "undefined"], limit: 50) |
| Port Binding | list_logs(resource: ["<id>"], text: ["EADDRINUSE", "address already in use"], limit: 20) |
| Missing Dependency | list_logs(resource: ["<id>"], text: ["Cannot find module", "ModuleNotFoundError"], limit: 50) |
| Database Connection | list_logs(resource: ["<id>"], text: ["ECONNREFUSED", "could not connect"], limit: 50) |
| Health Check | list_logs(resource: ["<id>"], text: ["Health check", "failed to become healthy"], limit: 20) |
| OOM | list_logs(resource: ["<id>"], text: ["heap out of memory", "OOMKilled", "exit code 137"], limit: 20) |
| Build Failure | list_logs(resource: ["<id>"], type: ["build"], text: ["error", "failed"], limit: 100) |
Most Common Errors
1. MISSING_ENV_VAR (Most Common)
Description: Application crashes because required environment variable is not set.
MCP Detection:
list_logs(
resource: ["<service-id>"],
text: ["KeyError", "not defined", "undefined", "Missing required environment"],
limit: 50
)Patterns to Match:
ReferenceError: DATABASE_URL is not definedTypeError: Cannot read property 'DATABASE_URL' of undefinedKeyError: 'API_KEY'KeyError: 'JWT_SECRET'Environment variable not found: DATABASE_URLMissing required environment variableprocess.env.DATABASE_URL is undefinedos.environ['DATABASE_URL'] KeyError
Common Variables:
DATABASE_URL- PostgreSQL connection stringREDIS_URL- Key Value connection stringJWT_SECRET- Authentication secretAPI_KEY- Third-party API keysSECRET_KEY- Django secret keyNEXTAUTH_SECRET- NextAuth.js secretSESSION_SECRET- Session encryption key
Root Causes:
Variable not declared in render.yaml
Variable marked with
sync: falsebut user didn't fill in DashboardTypo in variable name (case-sensitive!)
Variable added to code but not to render.yaml
Fix Strategy:
Read environment-variables.md and determine whether the service is managed through a Blueprint, Dashboard configuration, or an API/MCP operation.
Inspect existing keys without exposing values, then add only the missing configuration through the intended source of truth.
Use current Blueprint resource references rather than copied connection strings, and use an appropriate secret mechanism for sensitive values.
Apply the applicable deploy and verify successful startup in logs.
Prevention:
Keep the chosen configuration source authoritative
Never commit or print secret values
Double-check variable names (case-sensitive)
Keep local secret-bearing
.envfiles out of version control
2. PORT_BINDING_ERROR (Second Most Common)
MCP Detection:
list_logs(
resource: ["<service-id>"],
text: ["EADDRINUSE", "address already in use", "cannot assign requested address"],
limit: 20
)Description: Application not binding to correct port or host.
Patterns to Match:
EADDRINUSE: address already in useError: listen EADDRINUSE: address already in use 0.0.0.0:3000Address already in use (os error 48)Failed to bind to 0.0.0.0:3000Health check timeout(often caused by wrong port)cannot assign requested address
Root Causes:
App hardcodes port instead of using
$PORTenvironment variableApp binds to
localhostor127.0.0.1instead of0.0.0.0Multiple services trying to use same port
App doesn't read PORT environment variable
Fix Strategy:
Node.js / Express:
// Before (WRONG)
app.listen(3000);
app.listen(3000, 'localhost');
// After (CORRECT)
const PORT = process.env.PORT || 3000;
app.listen(PORT, '0.0.0.0', () => {
console.log(`Server running on port ${PORT}`);
});Python / Flask:
# Before (WRONG)
app.run(port=5000)
app.run(host='localhost', port=5000)
# After (CORRECT)
import os
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)Python / Django (gunicorn):
# In render.yaml startCommand
startCommand: gunicorn config.wsgi:application --bind 0.0.0.0:$PORTGo:
// Before (WRONG)
http.ListenAndServe(":3000", handler)
// After (CORRECT)
port := os.Getenv("PORT")
if port == "" {
port = "3000"
}
http.ListenAndServe(":"+port, handler)Prevention:
Always use
process.env.PORT(or equivalent)Always bind to
0.0.0.0Test with PORT=10000 locally
3. MISSING_DEPENDENCY
MCP Detection:
list_logs(
resource: ["<service-id>"],
text: ["Cannot find module", "ModuleNotFoundError", "ImportError", "package not found"],
limit: 50
)Description: Required package or module not installed.
Patterns to Match:
Cannot find module 'express'Error: Cannot find module './config'ModuleNotFoundError: No module named 'django'ImportError: No module named flaskpackage not found: github.com/gin-gonic/ginerror: could not findtokioin the list of imported crates
Root Causes:
Dependency not in package.json/requirements.txt/go.mod
Wrong build command
Build cache issues
Dependency only in devDependencies
Fix Strategy:
Node.js:
// Add to package.json
{
"dependencies": {
"express": "^4.18.0",
"pg": "^8.11.0"
}
}Python:
# Add to requirements.txt
django==4.2.0
psycopg2-binary==2.9.5Go:
# Update go.mod
go get github.com/gin-gonic/ginPrevention:
Keep dependencies in sync with code
Use lock files (package-lock.json, Pipfile.lock)
Test build locally first
Configuration Errors
4. DATABASE_CONNECTION_FAILED
MCP Detection:
list_logs(
resource: ["<service-id>"],
text: ["ECONNREFUSED", "could not connect to server", "connection refused", "ETIMEDOUT"],
limit: 50
)MCP Investigation:
# Check database status
list_postgres_instances()
# Check connection metrics
get_metrics(
resourceId: "<postgres-id>",
metricTypes: ["active_connections"]
)
# Query database directly
query_render_postgres(
postgresId: "<postgres-id>",
sql: "SELECT count(*) FROM pg_stat_activity"
)Description: Cannot connect to database.
Patterns to Match:
ECONNREFUSED 127.0.0.1:5432could not connect to server: Connection refusedFATAL: password authentication failedconnect ETIMEDOUTRedis connection to 127.0.0.1:6379 failedSSL SYSCALL error: EOF detected
Root Causes:
DATABASE_URL not set
Wrong connection string format
Database not provisioned
SSL settings incorrect
Connection timeout too short
Fix Strategy:
Step 1: Verify DATABASE_URL is set in render.yaml
envVars:
- key: DATABASE_URL
fromDatabase:
name: postgres
property: connectionStringStep 2: Enable SSL if needed (Node.js example)
const { Pool } = require('pg');
const pool = new Pool({
connectionString: process.env.DATABASE_URL,
ssl: process.env.NODE_ENV === 'production' ? {
rejectUnauthorized: false
} : false
});Step 3: Check database provisioned
render services -o json
# Verify database exists and is active5. INVALID_BUILD_COMMAND
Description: Build command fails.
Patterns to Match:
npm ERR! missing script: buildsh: line 1: webpack: command not founderror: failed to compileSyntaxError: Unexpected tokenError: Command failed with exit code 1
Root Causes:
Wrong build script name
Build tools not installed
Syntax errors in code
Build script doesn't exist
Fix Strategy:
Node.js - Check package.json:
{
"scripts": {
"build": "tsc", // or webpack, vite, etc.
"start": "node dist/index.js"
}
}Render.yaml:
buildCommand: npm ci && npm run buildPython - No build step needed:
buildCommand: pip install -r requirements.txtRuntime Errors
6. HEALTH_CHECK_TIMEOUT
Read deployments.md for current health-check behavior, timing, and service-type support before interpreting this failure.
MCP Detection:
list_logs(
resource: ["<service-id>"],
text: ["Health check", "failed to become healthy", "timeout"],
limit: 30
)MCP Investigation:
# Check if service is binding correctly
list_logs(
resource: ["<service-id>"],
text: ["listening", "started", "running on port"],
limit: 20
)
# Check CPU/Memory during startup
get_metrics(
resourceId: "<service-id>",
metricTypes: ["cpu_usage", "memory_usage"]
)Description: Service doesn't respond to health checks within timeout period.
Patterns to Match:
Health check timeoutfailed to become healthyService did not pass health checkGET / returned status 404
Root Causes:
Configured health check endpoint is missing or incorrect
App not binding to correct port
Slow application startup
Health check path incorrect
Application crashes during startup
Fix Strategy:
Step 1: Add health check endpoint
Node.js:
app.get('/health', (req, res) => {
res.status(200).json({ status: 'ok', timestamp: Date.now() });
});Python / Flask:
@app.route('/health')
def health():
return {'status': 'ok'}, 200Step 2: Configure in render.yaml
healthCheckPath: /healthStep 3: Ensure fast startup
Move slow initialization to after server start
Use lazy loading for heavy operations
7. OUT_OF_MEMORY (OOM)
MCP Detection:
list_logs(
resource: ["<service-id>"],
text: ["heap out of memory", "Killed", "OOMKilled", "exit code 137", "cannot allocate memory"],
limit: 30
)MCP Investigation:
# Check memory usage trend
get_metrics(
resourceId: "<service-id>",
metricTypes: ["memory_usage", "memory_limit"]
)
# Check if memory usage spiked
get_metrics(
resourceId: "<service-id>",
metricTypes: ["memory_usage"],
startTime: "<before-crash-time>"
)Description: Application exceeds available memory.
Patterns to Match:
JavaScript heap out of memoryFATAL ERROR: Reached heap limit Allocation failedKilled(exit code 137)OOMKilledcannot allocate memory
Root Causes:
Memory leak in application
Processing too much data at once
Free tier limit (512 MB) exceeded
Large dependency tree
No garbage collection optimization
Fix Strategy:
Short-term fixes:
Node.js - Increase heap size (if on paid plan):
envVars:
- key: NODE_OPTIONS
value: --max-old-space-size=2048Python - Optimize memory:
# Process data in chunks
for chunk in pd.read_csv('large_file.csv', chunksize=1000):
process(chunk)Long-term fixes:
Profile memory usage
Fix memory leaks
Optimize data structures
Upgrade to higher plan with more RAM
8. UNCAUGHT_EXCEPTION
Description: Unhandled error crashes the application.
Patterns to Match:
UnhandledPromiseRejectionWarningUncaught Error:Traceback (most recent call last):panic: runtime error:Fatal error:
Root Causes:
Missing error handling
Async errors not caught
Null pointer exceptions
Division by zero
Fix Strategy:
Node.js - Add error handlers:
// Catch all errors
process.on('uncaughtException', (err) => {
console.error('Uncaught Exception:', err);
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Rejection:', reason);
process.exit(1);
});
// Express error handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: 'Internal server error' });
});Python - Add try/catch:
try:
# Your code
result = risky_operation()
except Exception as e:
logger.error(f"Error: {e}")
# Handle gracefullyBuild Errors
9. BUILD_TIMEOUT
Description: Build takes longer than allowed time.
Patterns to Match:
Build timed out after 120 minutesCommand timed outBuild exceeded time limit
Root Causes:
Too many dependencies
Large dependency compilation (native modules)
Slow build scripts
Network issues downloading packages
Fix Strategy:
Optimize dependencies:
// Remove unused dependencies
{
"dependencies": {
// Only what you actually use
}
}Use faster build commands:
buildCommand: npm ci --prefer-offline && npm run buildIf the build cannot complete within the 120-minute command limit, move expensive artifact generation to CI/CD or another build stage and deploy the resulting artifact or image.
10. DOCKER_BUILD_FAILED
Description: Docker image build fails.
Patterns to Match:
failed to solve with frontend dockerfile.v0ERROR [internal] load metadata forfailed to compute cache keyCOPY failed:RUN returned a non-zero code
Root Causes:
Invalid Dockerfile syntax
Base image not found
COPY source doesn't exist
RUN command fails
Build context too large
Fix Strategy:
Check Dockerfile:
# Use valid base image
FROM node:20-alpine
# Set working directory
WORKDIR /app
# Copy dependency files first
COPY package*.json ./
RUN npm ci
# Then copy source
COPY . .
# Build
RUN npm run build
# Expose port
EXPOSE 10000
# Start
CMD ["npm", "start"]Add .dockerignore:
node_modules
.git
.env
*.logDatabase Errors
11. DATABASE_MIGRATION_FAILED
Description: Database migration fails during build.
Patterns to Match:
ProgrammingError: relation "users" already existsdjango.db.migrations.exceptions.InconsistentMigrationHistoryPrisma migration failedMigration failed to apply
Root Causes:
Migration conflicts
Database already has schema
Migration dependencies missing
Database locked
Fix Strategy:
Django:
# Check migration status
python manage.py showmigrations
# Fake initial migration if schema exists
python manage.py migrate --fake-initialRails:
# Check schema exists
bundle exec rails db:migrate:status
# Reset if needed (CAUTION: data loss)
bundle exec rails db:resetPrisma:
# Deploy migrations
npx prisma migrate deploy
# Or generate client only
npx prisma generateSecurity & Permission Errors
12. PERMISSION_DENIED
Description: Application doesn't have permission to access resource.
Patterns to Match:
EACCES: permission deniedError: EPERM: operation not permittedPermissionError: [Errno 13] Permission denied
Root Causes:
Trying to write to read-only filesystem
Wrong file permissions
Trying to bind to privileged port (<1024)
Fix Strategy:
Use allowed directories:
/tmp- writable temporary storage/var- avoid, not writableUse environment variables for file paths
Use correct port:
envVars:
- key: PORT
value: 10000 # Use 10000, not 80 or 443Dependency Version Errors
13. VERSION_MISMATCH
Description: Incompatible dependency versions.
Patterns to Match:
npm ERR! peer dep missingnpm ERR! ERESOLVE unable to resolve dependency treeRequires: Python >=3.8, but current version is 3.7requires Go version 1.20 or later
Fix Strategy:
Node.js - Fix peer dependencies:
npm install --legacy-peer-depsOr update package.json:
{
"engines": {
"node": ">=18.0.0",
"npm": ">=9.0.0"
}
}Python - Specify version:
# runtime.txt
python-3.11.5Go - Update go.mod:
go 1.21Resource Errors
14. DISK_SPACE_EXCEEDED
Description: Running out of disk space during build or runtime.
Patterns to Match:
No space left on deviceENOSPC: no space left on deviceDisk quota exceeded
Root Causes:
Large build artifacts
Log files growing too large
Too many dependencies
Fix Strategy:
Clean build artifacts:
buildCommand: npm ci && npm run build && npm prune --productionRemove unnecessary files:
# In build command
rm -rf .git tests/ docs/Networking Errors
15. EXTERNAL_API_TIMEOUT
Description: External API calls timing out.
Patterns to Match:
ETIMEDOUTESOCKETTIMEDOUTRequest timeoutconnect ETIMEDOUT
Root Causes:
API endpoint down
Network issues
Timeout too short
Rate limiting
Fix Strategy:
Add retries and timeout:
const axios = require('axios');
const api = axios.create({
timeout: 10000,
retry: {
retries: 3,
retryDelay: (retryCount) => retryCount * 1000
}
});Quick Reference Matrix
| Error Pattern | Frequency | Severity | Typical Fix Time |
|---|---|---|---|
| MISSING_ENV_VAR | Very High | High | 5 minutes |
| PORT_BINDING_ERROR | High | High | 10 minutes |
| MISSING_DEPENDENCY | High | Medium | 5 minutes |
| DATABASE_CONNECTION | Medium | High | 15 minutes |
| HEALTH_CHECK_TIMEOUT | Medium | Medium | 15 minutes |
| OUT_OF_MEMORY | Medium | Medium | 30+ minutes |
| BUILD_TIMEOUT | Low | Medium | 30+ minutes |
| UNCAUGHT_EXCEPTION | Medium | High | Varies |
Debugging Priority Order
Check environment variables first (Most common)
Verify port binding (Second most common)
Check build logs for errors
Verify database connections
Check for missing dependencies
Review application logs
Check resource usage
Exit Code Reference
Common exit codes and their meanings:
| Exit Code | Signal | Meaning | Common Cause |
|---|---|---|---|
| 0 | - | Success | Normal termination |
| 1 | - | General error | Application error, uncaught exception |
| 2 | - | Misuse | Invalid arguments, bad command usage |
| 126 | - | Cannot execute | Permission denied |
| 127 | - | Not found | Command or binary not found |
| 128+N | Signal N | Killed by signal | See signal codes below |
| 130 | SIGINT (2) | Interrupted | Ctrl+C, manual interrupt |
| 137 | SIGKILL (9) | Killed | Out of memory (OOM), forced kill |
| 139 | SIGSEGV (11) | Segmentation fault | Memory access violation |
| 143 | SIGTERM (15) | Terminated | Graceful shutdown request |
Note: Exit codes 128+N indicate the process was terminated by signal N. For example, 137 = 128 + 9 (SIGKILL).
Next Steps
After identifying error pattern:
Review troubleshooting.md for detailed fix procedures
Review log-analysis.md for log reading tips
Apply fix and monitor deployment
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
The author says: Requires Render MCP tools or CLI
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Render
- Publisher
- Render (Official)
- Source
- render-oss/skills · skills/render-debug · commit b985a63
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Render or Render.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download render-debug.zip