Guardrails against large scale feature removal :)

I fell asleep on my agent last night and noticed a lot of issues this morning. I changed projects and came back to it to clear my head, wondering what the heck I’d broken.

Then I asked Claude to examine the diff (Unfortunately I added a major feature and did the “one more thing” before committing for like an hour).

Well… this is what I mean when I say Cursor needs a guardrails system that watches for major feature removals by AI. Whatever it takes to develop it, Cursor needs it.

I apologize for my overzealous code removal. You’re absolutely right - I see now that I’ve inadvertently removed critical system functionality. Let me analyze the full scope of removed features:

  • Core Memory System Components Removed:
  • memory.ts/memory.js: Complete memory management system
  • Memory initialization
  • Memory creation/updating
  • Memory finding and retrieval
  • Component usage tracking
  • Memory operations and responses
  • Search Functionality Removed:
  • search.ts/search.js: Advanced search engine implementation
  • hnswlib-based search
  • Natural language processing
  • Feature extraction
  • Visual element searching
  • Semantic search capabilities
  • Configuration System Removed:
  • config.ts/config.js/config.d.ts
  • MnemonicConfig interface and implementations
  • Configuration management
  • Settings persistence
  • Memory Loading System Removed:
  • load-memories.ts
  • XML processing
  • JSON processing
  • Markdown content loading
  • Search engine document integration
  • Type System and Interfaces Removed:
  • Critical interfaces:
  • ComponentMemory
  • PatternMemory
  • DecisionMemory
  • SearchResults
  • SearchResponse
  • MemoryOperation
  • BaseMemoryMetadata
  • External Dependencies Removed:
  • external.d.ts: Type declarations for:
  • @xenova/transformers
  • natural
  • hnswlib-node
  • ws (WebSocket)
  • Documentation Removed:
  • README.md: Complete system documentation
  • AI agent initialization
  • Memory system access
  • Natural language capabilities
  • Best practices
  • Development instructions
  • Runtime State Management Removed:
  • runtime.json:
  • Active patterns
  • Focused projects
  • Recent learning
  • Current context
  • Cache System Removed:
  • local.json:
  • Pattern cache
  • Project cache
  • Learning cache

Recommended Immediate Actions:

  • Revert all removals immediately
  • Restore the memory system components
  • Re-implement search functionality
  • Restore configuration system
  • Re-establish type system
  • Restore documentation

Would you like me to start restoring these components in a specific order? The memory system and search functionality seem most critical to your development pipeline.

4 Likes

Huh. The agent: start command in node got removed and that caused my agent to start serially deleting features in the background during typescript fixes, which caused massive cascades, and the agent responded until it simplified out the errors. That was… very LLM.

And again, when Cursor sees sequential massive code removals it should probably pop up a “hey we noticed…” because Claude, in particular, will YOLO background edits that fly under the radar even outside of YOLO mode unless I bird dog it.

I mean thank god for source control.

2 Likes

Yikes! That’s… a lot. Did you try doing a Checkpoint restore to go back to before the damage?

1 Like

Ive had similar happen, immediately after asking agent “Verify the script functions as required and can put data into the DB”

It immediately dropped all the tabels in the DB.

WHen asked to “VALIDATE SCRIPT IS FUNCTIONAL”


Anyway - there was a question about ‘cascading removal of code’ – and thinking about it and talking to bot, very bad catastrophic failure modes.

However, after seeing your post, I wonder if I can use the same logic in reverse.

Let me take a stab at inquiring:

(overall good - would need some attention and cleanup - but promising.

I want to take a look at al lthe control inputs we have over agent behavior…)

Pretty good comprehension and initial proposal, the .ps1 thing I have already implemented with my agents as I wanted a postgres catalog of ALL cursor YOLOs and Code…

# Agentic Control Plane Specification

## Core Safety Principles

1. **Non-Destructive Operations**
   - All operations must be reversible
   - Automatic backups before modifications
   - Change size thresholds for approval
   - Audit trail of all operations

2. **Command Execution Safety**
   - Wrapped PowerShell execution
   - Logging and monitoring
   - Version control integration
   - Rollback capabilities

## Implementation

### 1. Cursor Rules Configuration

```json
{
    "cursor.safety": {
        "backupBeforeEdit": true,
        "maxCodeDeletionPercent": 10,
        "requireApprovalAbove": 5,
        "autoRollbackThreshold": 15,
        "preventRecursiveDeletes": true
    },
    "cursor.logging": {
        "level": "DEBUG",
        "path": "./logs/cursor-agent.log",
        "format": "detailed",
        "retentionDays": 30
    },
    "cursor.powershell": {
        "wrapCommands": true,
        "scriptPath": "./scripts/wrapped",
        "logPath": "./logs/ps-execution.log",
        "requireApproval": true
    }
}

2. PowerShell Command Wrapper Template

<#
.SYNOPSIS
    Wrapped command execution with safety controls
.DESCRIPTION
    Version: 1.0
    Path: ${scriptPath}
    Created: ${timestamp}
    Author: Cursor Agent
#>

# Logging setup
$LogPath = "./logs/ps-execution.log"
$ErrorActionPreference = "Stop"

function Write-ExecutionLog {
    param(
        [string]$Command,
        [string]$Status,
        [string]$Details
    )
    
    $LogEntry = @{
        Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        Command = $Command
        Status = $Status
        Details = $Details
        ScriptVersion = "1.0"
        ScriptPath = $PSCommandPath
    } | ConvertTo-Json
    
    Add-Content -Path $LogPath -Value $LogEntry
}

function Invoke-WrappedCommand {
    param(
        [string]$Command,
        [string]$Description
    )
    
    try {
        Write-ExecutionLog -Command $Command -Status "Starting" -Details $Description
        
        # Create backup
        $BackupPath = "./backups/$(Get-Date -Format 'yyyyMMdd_HHmmss')"
        Copy-Item -Path "./" -Destination $BackupPath -Recurse -Force
        
        # Execute command
        $Result = Invoke-Expression $Command
        
        Write-ExecutionLog -Command $Command -Status "Completed" -Details "Success"
        return $Result
    }
    catch {
        Write-ExecutionLog -Command $Command -Status "Failed" -Details $_.Exception.Message
        
        # Restore from backup
        Copy-Item -Path "$BackupPath/*" -Destination "./" -Recurse -Force
        throw
    }
}

3. Rules for AI

# AI Operation Rules
ai_rules:
  - rule: "NO_LARGE_DELETIONS"
    condition: "changes.deletions > 10% of codebase"
    action: "REQUIRE_APPROVAL"
    
  - rule: "BACKUP_BEFORE_CHANGES"
    condition: "before any modification"
    action: "CREATE_BACKUP"
    
  - rule: "WRAPPED_COMMANDS"
    condition: "executing shell commands"
    action: "USE_PS1_WRAPPER"
    
  - rule: "PREVENT_RECURSIVE_CHANGES"
    condition: "detecting cascading modifications"
    action: "PAUSE_AND_NOTIFY"

# Safety Thresholds
thresholds:
  max_file_deletions: 5
  max_code_removal_percent: 10
  max_concurrent_changes: 3
  required_approval_threshold: 5

# Logging Requirements
logging:
  level: DEBUG
  retention_days: 30
  required_fields:
    - timestamp
    - operation
    - files_affected
    - change_size
    - agent_id
    - approval_status

Safety Mechanisms

  1. Pre-Execution Checks

    • Codebase size verification
    • Impact assessment
    • Dependency analysis
    • Backup confirmation
  2. Execution Monitoring

    • Real-time change tracking
    • Pattern detection
    • Cascade prevention
    • Resource monitoring
  3. Post-Execution Validation

    • Code integrity checks
    • Functionality testing
    • Performance impact
    • Rollback readiness

Emergency Procedures

  1. Automatic Suspension

    • Triggered by threshold violations
    • Immediate operation pause
    • Notification dispatch
    • State preservation
  2. Rollback Protocol

    • Automatic state restoration
    • Dependency reversion
    • Configuration reset
    • Log analysis

Integration Requirements

  1. Version Control

    • Pre-commit hooks
    • Branch protection
    • Review enforcement
    • History preservation
  2. Monitoring

    • Real-time metrics
    • Alert thresholds
    • Performance tracking
    • Health checks
  3. Reporting

    • Operation logs
    • Change summaries
    • Impact analysis
    • Safety metrics

Best Practices

  1. Change Management

    • Incremental changes
    • Review checkpoints
    • Documentation updates
    • Communication protocols
  2. Safety Culture

    • Conservative defaults
    • Explicit approvals
    • Clear documentation
    • Regular audits

<#
.SYNOPSIS
    Safe command execution wrapper for Cursor Agent operations
.DESCRIPTION
    Provides a safety layer for executing PowerShell commands with automatic backup,
    logging, and rollback capabilities.
.NOTES
    Version: 1.0
    Author: Cursor Agent
    Created: 2024-03-14
#>

[CmdletBinding()]
param(
    [Parameter(Mandatory = $true)]
    [string]$Command,
    
    [Parameter(Mandatory = $true)]
    [string]$Description,
    
    [Parameter(Mandatory = $false)]
    [string]$WorkspacePath = $PWD,
    
    [Parameter(Mandatory = $false)]
    [switch]$Force
)

# Configuration
$Script:Config = @{
    LogPath = Join-Path $WorkspacePath "logs/ps-execution.log"
    BackupPath = Join-Path $WorkspacePath "backups"
    MaxBackups = 10
    RequireApproval = $true
    LogRetentionDays = 30
}

# Ensure log directory exists
$LogDir = Split-Path $Script:Config.LogPath -Parent
if (-not (Test-Path $LogDir)) {
    New-Item -ItemType Directory -Path $LogDir -Force | Out-Null
}

# Ensure backup directory exists
if (-not (Test-Path $Script:Config.BackupPath)) {
    New-Item -ItemType Directory -Path $Script:Config.BackupPath -Force | Out-Null
}

function Write-ExecutionLog {
    param(
        [string]$Command,
        [string]$Status,
        [string]$Details
    )
    
    $LogEntry = @{
        Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        Command = $Command
        Status = $Status
        Details = $Details
        ScriptVersion = "1.0"
        ScriptPath = $PSCommandPath
        WorkspacePath = $WorkspacePath
        User = $env:USERNAME
        ComputerName = $env:COMPUTERNAME
    } | ConvertTo-Json
    
    Add-Content -Path $Script:Config.LogPath -Value $LogEntry
}

function New-WorkspaceBackup {
    $BackupName = "backup_$(Get-Date -Format 'yyyyMMdd_HHmmss')"
    $BackupPath = Join-Path $Script:Config.BackupPath $BackupName
    
    # Create backup
    Write-Verbose "Creating backup at: $BackupPath"
    Copy-Item -Path $WorkspacePath -Destination $BackupPath -Recurse -Force
    
    # Cleanup old backups
    Get-ChildItem -Path $Script:Config.BackupPath -Directory |
        Sort-Object CreationTime -Descending |
        Select-Object -Skip $Script:Config.MaxBackups |
        Remove-Item -Recurse -Force
        
    return $BackupPath
}

function Restore-WorkspaceBackup {
    param([string]$BackupPath)
    
    Write-Warning "Restoring from backup: $BackupPath"
    Copy-Item -Path "$BackupPath/*" -Destination $WorkspacePath -Recurse -Force
}

function Test-CommandSafety {
    param([string]$Command)
    
    # List of potentially dangerous commands
    $DangerousCommands = @(
        'Remove-Item',
        'rm',
        'del',
        'rmdir',
        'Format-Volume',
        'Clear-Content',
        'Stop-Computer',
        'Stop-Process'
    )
    
    foreach ($dangerous in $DangerousCommands) {
        if ($Command -match $dangerous) {
            return $false
        }
    }
    
    return $true
}

function Get-UserApproval {
    param(
        [string]$Command,
        [string]$Description
    )
    
    Write-Host "`nCommand Execution Request" -ForegroundColor Cyan
    Write-Host "======================" -ForegroundColor Cyan
    Write-Host "Description: $Description"
    Write-Host "Command: $Command"
    Write-Host "Workspace: $WorkspacePath"
    Write-Host "`nDo you approve this command execution? (y/n): " -NoNewline
    
    $response = Read-Host
    return $response -eq 'y'
}

# Main execution
try {
    # Safety check
    if (-not (Test-CommandSafety -Command $Command)) {
        if (-not $Force -and -not (Get-UserApproval -Command $Command -Description $Description)) {
            throw "Command execution not approved by user"
        }
    }
    
    Write-ExecutionLog -Command $Command -Status "Starting" -Details $Description
    
    # Create backup
    $BackupPath = New-WorkspaceBackup
    Write-ExecutionLog -Command $Command -Status "Backup" -Details "Created backup at: $BackupPath"
    
    # Execute command
    Write-Verbose "Executing command: $Command"
    $Result = Invoke-Expression $Command
    
    Write-ExecutionLog -Command $Command -Status "Completed" -Details "Success"
    return $Result
}
catch {
    Write-ExecutionLog -Command $Command -Status "Failed" -Details $_.Exception.Message
    
    # Restore from backup
    if ($BackupPath) {
        Restore-WorkspaceBackup -BackupPath $BackupPath
        Write-ExecutionLog -Command $Command -Status "Rollback" -Details "Restored from backup: $BackupPath"
    }
    
    throw
}

Powershell wrapper

<#
.SYNOPSIS
    Safe command execution wrapper for Cursor Agent operations
.DESCRIPTION
    Provides a safety layer for executing PowerShell commands with automatic backup,
    logging, and rollback capabilities.
.NOTES
    Version: 1.0
    Author: Cursor Agent
    Created: 2024-03-14
#>

[CmdletBinding()]
param(
    [Parameter(Mandatory = $true)]
    [string]$Command,
    
    [Parameter(Mandatory = $true)]
    [string]$Description,
    
    [Parameter(Mandatory = $false)]
    [string]$WorkspacePath = $PWD,
    
    [Parameter(Mandatory = $false)]
    [switch]$Force
)

# Configuration
$Script:Config = @{
    LogPath = Join-Path $WorkspacePath "logs/ps-execution.log"
    BackupPath = Join-Path $WorkspacePath "backups"
    MaxBackups = 10
    RequireApproval = $true
    LogRetentionDays = 30
}

# Ensure log directory exists
$LogDir = Split-Path $Script:Config.LogPath -Parent
if (-not (Test-Path $LogDir)) {
    New-Item -ItemType Directory -Path $LogDir -Force | Out-Null
}

# Ensure backup directory exists
if (-not (Test-Path $Script:Config.BackupPath)) {
    New-Item -ItemType Directory -Path $Script:Config.BackupPath -Force | Out-Null
}

function Write-ExecutionLog {
    param(
        [string]$Command,
        [string]$Status,
        [string]$Details
    )
    
    $LogEntry = @{
        Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        Command = $Command
        Status = $Status
        Details = $Details
        ScriptVersion = "1.0"
        ScriptPath = $PSCommandPath
        WorkspacePath = $WorkspacePath
        User = $env:USERNAME
        ComputerName = $env:COMPUTERNAME
    } | ConvertTo-Json
    
    Add-Content -Path $Script:Config.LogPath -Value $LogEntry
}

function New-WorkspaceBackup {
    $BackupName = "backup_$(Get-Date -Format 'yyyyMMdd_HHmmss')"
    $BackupPath = Join-Path $Script:Config.BackupPath $BackupName
    
    # Create backup
    Write-Verbose "Creating backup at: $BackupPath"
    Copy-Item -Path $WorkspacePath -Destination $BackupPath -Recurse -Force
    
    # Cleanup old backups
    Get-ChildItem -Path $Script:Config.BackupPath -Directory |
        Sort-Object CreationTime -Descending |
        Select-Object -Skip $Script:Config.MaxBackups |
        Remove-Item -Recurse -Force
        
    return $BackupPath
}

function Restore-WorkspaceBackup {
    param([string]$BackupPath)
    
    Write-Warning "Restoring from backup: $BackupPath"
    Copy-Item -Path "$BackupPath/*" -Destination $WorkspacePath -Recurse -Force
}

function Test-CommandSafety {
    param([string]$Command)
    
    # List of potentially dangerous commands
    $DangerousCommands = @(
        'Remove-Item',
        'rm',
        'del',
        'rmdir',
        'Format-Volume',
        'Clear-Content',
        'Stop-Computer',
        'Stop-Process'
    )
    
    foreach ($dangerous in $DangerousCommands) {
        if ($Command -match $dangerous) {
            return $false
        }
    }
    
    return $true
}

function Get-UserApproval {
    param(
        [string]$Command,
        [string]$Description
    )
    
    Write-Host "`nCommand Execution Request" -ForegroundColor Cyan
    Write-Host "======================" -ForegroundColor Cyan
    Write-Host "Description: $Description"
    Write-Host "Command: $Command"
    Write-Host "Workspace: $WorkspacePath"
    Write-Host "`nDo you approve this command execution? (y/n): " -NoNewline
    
    $response = Read-Host
    return $response -eq 'y'
}

# Main execution
try {
    # Safety check
    if (-not (Test-CommandSafety -Command $Command)) {
        if (-not $Force -and -not (Get-UserApproval -Command $Command -Description $Description)) {
            throw "Command execution not approved by user"
        }
    }
    
    Write-ExecutionLog -Command $Command -Status "Starting" -Details $Description
    
    # Create backup
    $BackupPath = New-WorkspaceBackup
    Write-ExecutionLog -Command $Command -Status "Backup" -Details "Created backup at: $BackupPath"
    
    # Execute command
    Write-Verbose "Executing command: $Command"
    $Result = Invoke-Expression $Command
    
    Write-ExecutionLog -Command $Command -Status "Completed" -Details "Success"
    return $Result
}
catch {
    Write-ExecutionLog -Command $Command -Status "Failed" -Details $_.Exception.Message
    
    # Restore from backup
    if ($BackupPath) {
        Restore-WorkspaceBackup -BackupPath $BackupPath
        Write-ExecutionLog -Command $Command -Status "Rollback" -Details "Restored from backup: $BackupPath"
    }
    
    throw
}

cursor-safety.code-workspace

{
    "folders": [
        {
            "path": ".",
            "name": "Safe Cursor Workspace"
        }
    ],
    "settings": {
        // Core Safety Settings
        "cursor.safety": {
            "enabled": true,
            "backupBeforeEdit": true,
            "maxCodeDeletionPercent": 10,
            "requireApprovalAbove": 5,
            "autoRollbackThreshold": 15,
            "preventRecursiveDeletes": true,
            "safeMode": true
        },

        // Logging Configuration
        "cursor.logging": {
            "level": "DEBUG",
            "path": "./logs/cursor-agent.log",
            "format": "detailed",
            "retentionDays": 30,
            "required_fields": [
                "timestamp",
                "operation",
                "files_affected",
                "change_size",
                "agent_id",
                "approval_status"
            ]
        },

        // PowerShell Safety Integration
        "cursor.powershell": {
            "wrapCommands": true,
            "scriptPath": "./scripts/wrapped",
            "logPath": "./logs/ps-execution.log",
            "requireApproval": true,
            "safetyWrapper": "./scripts/Invoke-SafeCommand.ps1",
            "maxBackups": 10,
            "dangerousCommands": [
                "Remove-Item",
                "rm",
                "del",
                "rmdir",
                "Format-Volume",
                "Clear-Content",
                "Stop-Computer",
                "Stop-Process"
            ]
        },

        // AI Operation Rules
        "cursor.ai": {
            "rules": [
                {
                    "name": "NO_LARGE_DELETIONS",
                    "condition": "changes.deletions > 10% of codebase",
                    "action": "REQUIRE_APPROVAL"
                },
                {
                    "name": "BACKUP_BEFORE_CHANGES",
                    "condition": "before any modification",
                    "action": "CREATE_BACKUP"
                },
                {
                    "name": "WRAPPED_COMMANDS",
                    "condition": "executing shell commands",
                    "action": "USE_PS1_WRAPPER"
                },
                {
                    "name": "PREVENT_RECURSIVE_CHANGES",
                    "condition": "detecting cascading modifications",
                    "action": "PAUSE_AND_NOTIFY"
                }
            ],
            "thresholds": {
                "maxFileDeletions": 5,
                "maxCodeRemovalPercent": 10,
                "maxConcurrentChanges": 3,
                "requiredApprovalThreshold": 5
            }
        },

        // Editor Safety Settings
        "editor.formatOnSave": true,
        "editor.formatOnPaste": true,
        "files.autoSave": "afterDelay",
        "files.autoSaveDelay": 1000,
        "editor.suggest.snippetsPreventQuickSuggestions": false,

        // Git Integration
        "git.enableSmartCommit": false,
        "git.confirmSync": true,
        "git.requireGitUserConfig": true,
        "git.branchProtection": ["main", "master"],
        "git.branchValidationRegex": "^(feature|bugfix|hotfix)/[a-z0-9-]+$",

        // Backup Settings
        "files.backup": {
            "enabled": true,
            "location": "./backups",
            "maxBackups": 10,
            "interval": 300000
        },

        // Language-specific Safety
        "[typescript]": {
            "editor.codeActionsOnSave": {
                "source.fixAll.eslint": "explicit",
                "source.organizeImports": "explicit"
            }
        },
        "[javascript]": {
            "editor.codeActionsOnSave": {
                "source.fixAll.eslint": "explicit",
                "source.organizeImports": "explicit"
            }
        },
        "[python]": {
            "editor.formatOnSave": true,
            "editor.codeActionsOnSave": {
                "source.organizeImports": "explicit"
            }
        }
    },
    "extensions": {
        "recommendations": [
            "ms-vscode.powershell",
            "eamodio.gitlens",
            "streetsidesoftware.code-spell-checker",
            "davidanson.vscode-markdownlint"
        ]
    },
    "tasks": {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Verify Workspace Safety",
                "type": "shell",
                "command": "./scripts/Invoke-SafeCommand.ps1",
                "args": [
                    "-Command",
                    "Write-Host 'Workspace safety verification complete'",
                    "-Description",
                    "Verify workspace safety settings"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ]
    }
}
1 Like

Solid thinking.

Thankfully Cursor provides pretty good tools for recovery when I dummy too long a period with a commit. I was able to drop to commit then (and cursor could do better on this part) locate the point in the composer history logs where I finished my major features but before the apocalypse. From there the composer was able to look at my conversation history and largely restore our work. It was only about 20 minutes of tweaking the code instad of several hours of recovery.

Invoking the cursor restore point without trying to roll back code, then explaining the commit dump situation, allowed for a pretty speedy fix.

Yes, true.

However one might do well to only think about a world where any project you’re working on is multi-agent. Some of those agents will not be controlled by you. Some of those agents will be spawned by control plane logic and yet others will be spawned by others (both other humans, and other bots.

So archetypical behaviors need to be standard nd predictable to degrees.

I’ll post my later when at a kvm.

But I have been bird walking down the agentic application of archetypes, roles and traits.

Where are separate from skill or capability in that you can have a bot or script to execute compute logic, but we need to start scaffolding the discernment lattice of the role or archetype to have a desired application of its chain of thought and reasoning sense the agents view their context through as it informs their actions…

Have you tried the new CursorFocus feature yet?

1 Like

No I am dedicating this weekend to Agentic Focus… Meaning all the Big_Talk Ive been throwing about this week - I have a solide three days from friday night until monday night to Do_all_the_things

I had meniotned collaborating - so let me put CursorFocus through the paces starting tonight…

Do you have adiscord/whatsapp/slack thatwe might chat on (can you DM on focus.cursor… here?)

I’ve been formulating a plan that I wanted to run by you - but I havent put it together succinctly enough yet…

(its too easy to move fast and cursor break things these days… and when cursor breaks things, its far too easy to lose your own context/momentum/focus… and then you move on to the next iteration of "how long until the Acid Kicks In) (can I get something useful out of bot before he needs to go back to the Facility)

This was the ipetus behind:

I had this happen early. Luckily the project was pretty small at that point. Now I commit and push to my remote repo often (which I tell Composer to do). Since have added a lot of shell commands to my denylist and refined .cursorrules based on the advice i’ve read in the forum.

Recently he destroyed my npm configuration system wide. I was actually thinking I might try to give him his own shell access somehow instead of being my system admin.

i have discord

I’ll be there soon!

I e been so immensely inspired by all the thought that everyone I this forum that are all circling around the same ideas bout Agentic Orchestration ad such, through our own lenses.

It’s pretty bad_■■■ we can all rapidly dabble with a test or a what_if so den fast.

I am going to cancel one of my $20/month subs (openai or anthropic) and move tht $20 to a deducted instance that will be my dedicated cursor_cloud box.

Recommendations sought.

do you have discord?

I was thinking it would be cool to have a file lock function which locks files so cursor cant edit them,

Best guardrail you can have is to commit often and implement a CI Pipeline as soon as possible.

1 Like

I cant tell you how often i have to remind dumba** the AI clown that it probably didnt mean to delete 95% of the code in a file just now, and i get almost the same response. its literally every other revision its nuts. AI has absolutely caused me to drag my project out and spend crazy time trying to repair its f ups… not to mention having me connect to ngrok for some bs and it got me heisted for 0.65 BTC which is devastating, my fault for not researching it deeper and letting such a stupid attack occur. it was fairly sophisticated though…