~/wiki

Workspace Isolation

Confiance : high
workspace-isolationsecuritysandboxingmulti-tenancyfile-permissionsclient-separationopenclawsaas-architecturedocker-isolationpath-traversal-prevention

Security pattern ensuring that AI agents and automated systems can only access and modify files within their designated workspace boundaries, preventing cross-client contamination in multi-tenant environments.

Core Concept

Workspace isolation creates virtual boundaries around file system access for AI agents, ensuring that operations like file reading, writing, and shell execution cannot escape predefined directory structures. Critical for client-facing-ai-development where multiple clients share infrastructure.

Security Boundaries

/var/projects/
├── client-a/          # AI agent A can only access this tree
│   ├── src/
│   ├── config/
│   └── deploy/
├── client-b/          # AI agent B isolated to this tree  
│   ├── src/
│   ├── assets/
│   └── tests/
└── shared/            # Optional shared resources with explicit access
    └── libraries/

Implementation Mechanisms

File System Level Controls

  • Chroot environments: Change root directory to isolate file system view
  • Bind mounts: Mount only necessary directories into container namespaces
  • Path validation: Programmatic checks preventing ../ traversal attacks
  • Symbolic link restrictions: Prevent symlinks from escaping workspace boundaries

Container-Based Isolation

openclaw and similar systems leverage Docker containers for workspace isolation:

# Workspace isolation via container volumes
volumes:
  - "./client-workspace:/app/workspace:rw"  # Only this directory accessible
  - "/etc/passwd:/etc/passwd:ro"            # Read-only system files if needed

Application-Level Enforcement

AI agent tools implement workspace validation:

def validate_workspace_path(path, workspace_root):
    """Ensure path remains within workspace boundaries."""
    resolved = os.path.realpath(os.path.join(workspace_root, path))
    return resolved.startswith(os.path.realpath(workspace_root))
    
def safe_file_operation(file_path, workspace_root, operation):
    """Execute file operation only if within workspace."""
    if not validate_workspace_path(file_path, workspace_root):
        raise SecurityError("Path outside workspace boundary")
    return operation(file_path)

Multi-Client Architecture

Isolation Strategies

Option 1: Container Per Client

Each client gets dedicated container with isolated workspace:

  • Pros: Strong isolation, resource limits, independent scaling
  • Cons: Higher resource overhead, more complex orchestration
  • Use case: High-security clients, custom configurations

Option 2: Shared Process with Path Validation

Single AI agent process with runtime workspace validation:

  • Pros: Lower resource usage, simpler deployment
  • Cons: Requires bulletproof validation logic, shared process risks
  • Use case: Trusted environments, cost-sensitive deployments

Option 3: User-Based Isolation

Operating system user accounts for workspace separation:

  • Pros: OS-level security, familiar permission models
  • Cons: User management overhead, potential privilege escalation
  • Use case: Traditional server environments, fine-grained permissions

Client Onboarding Process

# New client workspace setup
create_client_workspace() {
    local client_name=$1
    local workspace_root="/var/projects/${client_name}"
    
    # Create isolated directory structure
    mkdir -p "${workspace_root}"/{src,config,deploy,logs}
    
    # Set restrictive permissions  
    chown -R "client-${client_name}:clients" "${workspace_root}"
    chmod -R 750 "${workspace_root}"
    
    # Initialize Git repository
    cd "${workspace_root}" && git init
    
    # Deploy AI agent with workspace restriction
    deploy_agent --workspace="${workspace_root}" --client="${client_name}"
}

Security Considerations

Attack Vectors and Mitigations

Path Traversal Attacks

# Malicious input attempting to escape workspace
echo "../../etc/passwd" | ai-agent read-file

# Mitigation: Path canonicalization and validation
canonical_path=$(realpath "${workspace_root}/${user_input}")
if "${canonical_path}" != "${workspace_root}"*; then
    error "Access denied: path outside workspace"
fi
# Malicious symlink to system files
ln -s /etc/passwd "${workspace_root}/config.txt"

# Mitigation: Resolve symlinks and validate final target
target=$(readlink -f "${file_path}")
validate_workspace_path "${target}" "${workspace_root}"

Resource Exhaustion

# Prevent workspace-level resource abuse
# Docker resource limits
--memory="1g" --cpus="0.5" --storage-opt size=10g

# File count and size limits
find "${workspace_root}" -type f | wc -l  # Monitor file count
du -sh "${workspace_root}"                # Monitor disk usage

Audit and Monitoring

  • File access logging: Track all file operations with client attribution
  • Boundary violation detection: Alert on attempted workspace escapes
  • Resource usage monitoring: Per-client storage and processing metrics
  • Change tracking: Git-based audit trail for all modifications

Tool Integration

AI Agent Tools with Workspace Awareness

Common tools in openclaw and similar systems:

File Operations

class WorkspaceAwareFileManager:
    def __init__(self, workspace_root):
        self.workspace_root = os.path.abspath(workspace_root)
    
    def read_file(self, relative_path):
        full_path = self._validate_path(relative_path)
        with open(full_path, 'r') as f:
            return f.read()
    
    def write_file(self, relative_path, content):
        full_path = self._validate_path(relative_path)
        os.makedirs(os.path.dirname(full_path), exist_ok=True)
        with open(full_path, 'w') as f:
            f.write(content)

Shell Execution

# Restricted shell execution within workspace
execute_in_workspace() {
    local workspace_root=$1
    local command=$2
    
    # Change to workspace directory
    cd "${workspace_root}" || exit 1
    
    # Execute with restricted environment
    timeout 30s bash -c "${command}"
}

Performance Considerations

Overhead Analysis

  • Path validation: Minimal CPU overhead for security checks
  • Container isolation: Higher memory overhead but strong security
  • File system operations: Slight latency increase from validation
  • Monitoring: Network and storage overhead for audit logging

Optimization Strategies

  • Path caching: Cache validated paths to reduce repeated validation
  • Lazy container creation: Create client containers on-demand
  • Shared base images: Reduce storage overhead through Docker layer sharing
  • Batch operations: Group file operations to reduce validation overhead

Compliance and Regulatory Benefits

Data Sovereignty

  • Geographic isolation: Client data remains in specified regions
  • Regulatory compliance: Meet GDPR, HIPAA, SOC2 requirements
  • Audit trails: Complete record of data access and modifications
  • Data retention: Client-specific backup and deletion policies

Security Certifications

  • SOC2 Type II: Demonstrable access controls and monitoring
  • ISO 27001: Information security management system compliance
  • PCI DSS: Payment card industry data security standards
  • HIPAA: Healthcare information privacy and security requirements

See also