Rollback Procedures
Establishes reliable rollback procedures for quick recovery from deployment failures, ensuring service availability and stability.
Install this skill
Security score
The Rollback Procedures skill was audited on Mar 1, 2026 and we found 73 security issues across 4 threat categories, including 3 high-severity. Review the findings below before installing.
Categories Tested
Security Issues
Direct command execution function call
| 214 | const output = execSync(platformConfig.listCommand, { encoding: 'utf8' }); |
Direct command execution function call
| 402 | execSync(command, { stdio: 'inherit' }); |
Direct command execution function call
| 421 | execSync(command, { stdio: 'inherit' }); |
Template literal with variable interpolation in command context
| 186 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 228 | colorLog(`✅ Found ${deployments.length} deployments`, 'green'); |
Template literal with variable interpolation in command context
| 285 | colorLog(`🏥 Checking health of deployment: ${deployment.url}`, 'blue'); |
Template literal with variable interpolation in command context
| 292 | const url = `${deployment.url}${endpoint}`; |
Template literal with variable interpolation in command context
| 309 | colorLog(`❌ Health check failed: ${endpoint} (${response.status})`, 'red'); |
Template literal with variable interpolation in command context
| 311 | colorLog(`✅ Health check passed: ${endpoint} (${responseTime}ms)`, 'green'); |
Template literal with variable interpolation in command context
| 319 | colorLog(`❌ Health check error: ${endpoint} - ${error.message}`, 'red'); |
Template literal with variable interpolation in command context
| 334 | colorLog(`📊 Getting metrics for deployment: ${deployment.url}`, 'blue'); |
Template literal with variable interpolation in command context
| 347 | colorLog(` Error Rate: ${(metrics.error_rate * 100).toFixed(2)}%`, 'cyan'); |
Template literal with variable interpolation in command context
| 348 | colorLog(` Response Time: ${metrics.response_time.toFixed(0)}ms`, 'cyan'); |
Template literal with variable interpolation in command context
| 349 | colorLog(` Throughput: ${metrics.throughput.toFixed(0)} req/s`, 'cyan'); |
Template literal with variable interpolation in command context
| 376 | colorLog(`🔄 Executing rollback to: ${targetDeployment.url}`, 'magenta'); |
Template literal with variable interpolation in command context
| 377 | colorLog(`Strategy: ${strategy}`, 'cyan'); |
Template literal with variable interpolation in command context
| 388 | throw new Error(`Unsupported platform: ${this.platform}`); |
Template literal with variable interpolation in command context
| 391 | colorLog(`❌ Rollback failed: ${error.message}`, 'red'); |
Template literal with variable interpolation in command context
| 400 | const command = `${platformConfig.promoteCommand} ${targetDeployment.id}`; |
Template literal with variable interpolation in command context
| 401 | colorLog(`🚀 Running: ${command}`, 'blue'); |
Template literal with variable interpolation in command context
| 412 | throw new Error(`Vercel rollback failed: ${error.message}`); |
Template literal with variable interpolation in command context
| 419 | const command = `${platformConfig.rollbackCommand} ${targetDeployment.id}`; |
Template literal with variable interpolation in command context
| 420 | colorLog(`🚀 Running: ${command}`, 'blue'); |
Template literal with variable interpolation in command context
| 430 | throw new Error(`Netlify rollback failed: ${error.message}`); |
Template literal with variable interpolation in command context
| 435 | colorLog(`📢 Sending notification: ${type}`, 'blue'); |
Template literal with variable interpolation in command context
| 447 | const notificationFile = `rollback-notification-${Date.now()}.json`; |
Template literal with variable interpolation in command context
| 449 | colorLog(`📄 Notification saved: ${notificationFile}`, 'cyan'); |
Template literal with variable interpolation in command context
| 456 | colorLog(`🔍 Monitoring deployment for ${duration / 60000} minutes...`, 'blue'); |
Template literal with variable interpolation in command context
| 472 | colorLog(`🚨 Rollback triggered: ${rollbackDecision.reason}`, 'red'); |
Template literal with variable interpolation in command context
| 473 | colorLog(`Severity: ${rollbackDecision.severity}`, 'yellow'); |
Template literal with variable interpolation in command context
| 561 | colorLog(`${status} ${index + 1}. ${dep.id} - ${dep.url}${prod}`, 'cyan'); |
Template literal with variable interpolation in command context
| 629 | console.log(`📡 Monitoring deployment: ${deployment.url}`); |
Template literal with variable interpolation in command context
| 647 | console.log(`🔍 Auto-check at ${new Date().toLocaleTimeString()}`); |
Template literal with variable interpolation in command context
| 654 | console.log(`🚨 Auto-rollback triggered: ${rollbackDecision.reason}`); |
Template literal with variable interpolation in command context
| 661 | console.log(`🔄 Auto-rolling back to: ${previousDeployment.url}`); |
Template literal with variable interpolation in command context
| 703 | console.log(`🤖 Auto-rollback status: ${this.isRunning ? 'running' : 'stopped'}`); |
Template literal with variable interpolation in command context
| 747 | console.log(`${colors[color]}${message}${colors.reset}`); |
Template literal with variable interpolation in command context
| 757 | colorLog(`💾 Creating backup for deployment: ${deploymentId}`, 'blue'); |
Template literal with variable interpolation in command context
| 764 | const backupDir = path.join(this.backupDir, `${deploymentId}-${timestamp}`); |
Template literal with variable interpolation in command context
| 789 | colorLog(`✅ Backed up: ${file}`, 'green'); |
Template literal with variable interpolation in command context
| 806 | colorLog(`✅ Backup created: ${backupDir}`, 'green'); |
Template literal with variable interpolation in command context
| 809 | colorLog(`❌ Backup failed: ${error.message}`, 'red'); |
Template literal with variable interpolation in command context
| 865 | colorLog(`${index + 1}. ${backup}`, 'cyan'); |
Template literal with variable interpolation in command context
| 866 | colorLog(` Deployment: ${metadata.deploymentId}`, 'yellow'); |
Template literal with variable interpolation in command context
| 867 | colorLog(` Platform: ${metadata.platform}`, 'yellow'); |
Template literal with variable interpolation in command context
| 868 | colorLog(` Created: ${date}`, 'yellow'); |
Template literal with variable interpolation in command context
| 869 | colorLog(` Path: ${backupPath}`, 'yellow'); |
Template literal with variable interpolation in command context
| 872 | colorLog(`${index + 1}. ${backup} (no metadata)`, 'yellow'); |
Template literal with variable interpolation in command context
| 878 | colorLog(`🔄 Restoring backup: ${backupName}`, 'blue'); |
Template literal with variable interpolation in command context
| 919 | colorLog(`✅ Restored: ${file}`, 'green'); |
Template literal with variable interpolation in command context
| 931 | colorLog(`❌ Restore failed: ${error.message}`, 'red'); |
Template literal with variable interpolation in command context
| 937 | colorLog(`🧹 Cleaning up old backups (keeping ${keepCount})...`, 'blue'); |
Template literal with variable interpolation in command context
| 958 | colorLog(`🗑️ Deleted: ${backup}`, 'yellow'); |
Template literal with variable interpolation in command context
| 961 | colorLog(`✅ Cleaned up ${toDelete.length} old backups`, 'green'); |
Node child_process module reference
| 169 | const { execSync } = require('child_process'); |
Webhook reference - potential data exfiltration
| 151 | channels: ['slack', 'email', 'webhook'], |
Access to .env file
| 198 | if (process.env.VERCEL_ENV) { |
Access to .env file
| 776 | '.env.local', |
Access to .env file
| 834 | if (process.env.VERCEL_ENV) return 'vercel'; |
Hex-encoded characters
| 176 | reset: '\x1b[0m', |
Hex-encoded characters
| 177 | red: '\x1b[31m', |
Hex-encoded characters
| 178 | green: '\x1b[32m', |
Hex-encoded characters
| 179 | yellow: '\x1b[33m', |
Hex-encoded characters
| 180 | blue: '\x1b[34m', |
Hex-encoded characters
| 181 | cyan: '\x1b[36c', |
Hex-encoded characters
| 182 | magenta: '\x1b[35m', |
Hex-encoded characters
| 737 | reset: '\x1b[0m', |
Hex-encoded characters
| 738 | red: '\x1b[31m', |
Hex-encoded characters
| 739 | green: '\x1b[32m', |
Hex-encoded characters
| 740 | yellow: '\x1b[33m', |
Hex-encoded characters
| 741 | blue: '\x1b[34m', |
Hex-encoded characters
| 742 | cyan: '\x1b[36c', |
Hex-encoded characters
| 743 | magenta: '\x1b[35m', |