Skip to main content
Enclave provides pre-configured security profiles that balance functionality against risk. Choose the appropriate level based on your trust model and use case.

Using Security Levels

import { Enclave } from '@enclave-vm/core';

// Use STRICT for untrusted AI-generated code
const strictEnclave = new Enclave({ securityLevel: 'STRICT' });

// Use STANDARD for internal tools (default)
const standardEnclave = new Enclave({ securityLevel: 'STANDARD' });

// Override specific values from the preset
const customEnclave = new Enclave({
  securityLevel: 'SECURE',
  timeout: 20000,  // Override SECURE's 15s default
});

Security Level Comparison

SettingSTRICTSECURESTANDARDPERMISSIVE
timeout5s15s30s60s
maxIterations1,0005,00010,000100,000
maxToolCalls10501001,000
maxConsoleCalls1005001,00010,000
maxConsoleOutputBytes64KB256KB1MB10MB
sanitizeStackTracesYESYESNONO
blockTimingAPIsYESNONONO
allowUnboundedLoopsNONOYESYES
unicodeSecurityCheckYESYESNONO

When to Use Each Level

STRICT

Use for maximum security with untrusted code:
  • AI-generated scripts from external sources
  • User-submitted code
  • Third-party plugin code
  • Any code where you cannot verify the source
const enclave = new Enclave({
  securityLevel: 'STRICT',
  toolHandler: async (name, args) => {
    // Only expose read-only tools
    if (!name.startsWith('read:')) {
      throw new Error('Only read operations allowed');
    }
    return executeReadOnlyTool(name, args);
  },
});

SECURE

Balanced security for semi-trusted scenarios:
  • Internal automation scripts
  • Validated AI-generated code
  • Scripts from authenticated users
const enclave = new Enclave({
  securityLevel: 'SECURE',
  maxToolCalls: 100, // Allow more tool calls
});

STANDARD

Default level for trusted internal use:
  • Internal workflow automation
  • Development and testing
  • Scripts you control
const enclave = new Enclave({
  securityLevel: 'STANDARD', // Default if not specified
});

PERMISSIVE

Minimal restrictions for controlled environments:
  • Internal testing
  • Performance benchmarking
  • Trusted scripts where you need maximum flexibility
const enclave = new Enclave({
  securityLevel: 'PERMISSIVE',
});
Use STRICT for any untrusted code, including AI-generated scripts from external sources or user-submitted scripts.

Customizing Security Levels

You can start with a preset and override specific settings:
const enclave = new Enclave({
  securityLevel: 'SECURE',

  // Override specific limits
  timeout: 30000,           // Increase timeout
  maxToolCalls: 200,        // Allow more tool calls
  maxIterations: 20000,     // Allow more iterations

  // Add additional restrictions
  sanitizeStackTraces: true, // Enable stack sanitization
});

Defense-in-Depth

Security levels configure multiple defense layers:
  1. AST Validation - Blocked constructs vary by level
  2. Resource Limits - Timeout, iterations, tool calls
  3. Output Controls - Console rate limiting, output size
  4. Stack Sanitization - Information leakage prevention
Each level provides appropriate defaults for its trust model.