.biggiignore

Overview

.biggiignore is a root-level file that tells BIGGI which files and folders it should not access. It uses standard .gitignore pattern syntax, but it only affects BIGGI's file access, not Git.

If no .biggiignore file exists, BIGGI can access all files in the workspace.

Quick Start

The primary mechanism for controlling file access is the permission system in biggi.jsonc. You define tool-level permissions with glob patterns:

{
  "permission": {
    "read": { "*.env": "deny", "*": "allow" },
    "edit": { "dist/**": "deny", "*": "allow" }
  }
}

If you have an existing .biggiignore file, it is still supported. The IgnoreMigrator automatically converts .biggiignore patterns into permission deny rules on read and edit tools, so your existing rules continue to work without manual changes.

You can also exclude paths from the file watcher separately using watcher.ignore:

{
  "watcher": {
    "ignore": ["tmp/**", "logs/**"]
  }
}

Pattern Rules

.biggiignore follows the same rules as .gitignore:

  • # starts a comment
  • * and ** match wildcards
  • Trailing / matches directories only
  • ! negates a previous rule

Patterns are evaluated relative to the workspace root.

What It Affects

File access is controlled through permission-based access control. Each tool (read, edit, glob, grep, write, bash, etc.) has its own permission rules evaluated against glob patterns.

In addition to your explicit permission rules:

  • Hardcoded directory ignores — 27 directories are always skipped (e.g. node_modules, .git, dist, build, .cache, __pycache__, vendor, and others).
  • Hardcoded file pattern ignores — 11 file patterns are always skipped (e.g. lock files, binary artifacts).
  • .gitignore and .ignore files are also respected when listing and searching files.

If a file is denied by a permission rule, the tool will report that access was blocked.

Configuration Details

Permission Rules

Permission rules are defined per-tool in biggi.jsonc. Patterns are evaluated in order — the last matching rule wins:

{
  "permission": {
    "read": {
      "*.env": "deny",
      "secrets/**": "deny",
      "*": "allow"
    },
    "edit": {
      "dist/**": "deny",
      "*.lock": "deny",
      "*": "allow"
    }
  }
}

Migrating from .biggiignore

If you already have a .biggiignore file, you don't need to do anything — the IgnoreMigrator reads your existing patterns and applies them as deny rules on read and edit tools automatically. You can optionally move your rules into biggi.jsonc for more granular control (e.g. denying edits but allowing reads).

File Watcher Exclusions

The watcher.ignore setting controls which paths the file watcher skips. This is separate from tool permissions and only affects change detection:

{
  "watcher": {
    "ignore": ["tmp/**", "logs/**", ".build/**"]
  }
}

Checkpoints vs .biggiignore

Checkpoint tracking is separate from file access rules. Files blocked by .biggiignore or permission rules can still be checkpointed if they are not excluded by .gitignore. See the Checkpoints documentation for details.

Troubleshooting

  • BIGGI can't access a file you want: Remove or narrow the matching rule in .biggiignore, or adjust the permission rules in biggi.jsonc.
  • A file still appears in lists: Verify both the tool-permission rules and watcher.ignore; they control different behavior.
  • .biggiignore patterns are not working: Ensure the file is at the workspace root and uses valid .gitignore syntax.