Docs/Reference/Threshold Configuration

Threshold Configuration

Central reference for all detection thresholds and their recommended values

Threshold Configuration Reference

This is the single source of truth for all Cadence detection thresholds. Thresholds control the sensitivity of detection strategies and can be tuned for your specific needs.

All Configuration Thresholds

ThresholdDefaultMinimumMaximumUnitDescription
suspicious_additions50010010000linesFlag commits with more additions than this
suspicious_deletions100010010000linesFlag commits with more deletions than this
max_additions_per_min10010500lines/minFlag if additions per minute exceeds this
max_deletions_per_min500501000lines/minFlag if deletions per minute exceeds this
min_time_delta_seconds600300secondsFlag if commits are within N seconds of previous
max_files_per_commit5010200filesFlag commits modifying more files than this
max_addition_ratio0.950.01.0ratioFlag if additions are >N ratio (0=0%, 1=100%)
min_deletion_ratio0.950.01.0ratioFlag if deletions are >N ratio (0=0%, 1=100%)
min_commit_size_ratio100101000linesMinimum commit size for ratio analysis
enable_precision_analysistrue--boolEnable precision/consistency analysis

Size-Based Thresholds

suspicious_additions

Default: 500 lines

Controls how many lines must be added in a single commit to flag it as suspicious.

ValueBehaviorUse Case
300Very sensitiveStrict AI detection, research repos
500Default (balanced)General purpose, most projects
1000LenientProjects with legitimate large commits
2000Very lenientMonorepos, generated code repos

Impact of decreasing (e.g., 500 → 300):

  • ✅ Catches more potential AI-generated code
  • ✅ More sensitive to subtle patterns
  • ❌ Increased false positives
  • ❌ May flag legitimate large features

Impact of increasing (e.g., 500 → 1000):

  • ✅ Fewer false positives
  • ✅ Allows large legitimate commits
  • ❌ Misses AI-generated large modules
  • ❌ Less sensitive detection

suspicious_deletions

Default: 1000 lines

Controls how many lines must be deleted in a commit to flag it as suspicious.

ValueBehaviorUse Case
500SensitiveStrict AI detection
1000Default (balanced)General purpose
2000LenientProjects with bulk refactors

Note: Deletions are typically less suspicious than additions (humans delete more than AI).

Velocity-Based Thresholds

max_additions_per_min

Default: 100 lines/minute

Determines how many lines can be added per minute before flagging as suspicious.

ValueBehaviorInterpretation
50Very strict<1 line per second average
100Default (balanced)~2 lines per second average
200Lenient~3 lines per second average
300+Very lenientAllows bulk operations

Typical patterns:

  • Human baseline: 20-50 lines/minute
  • AI-generated code: 100-500+ lines/minute
  • Build system output: 1000+ lines/minute

Example calculations:

  • Commit: 5000 additions in 10 minutes → 500 adds/min (very suspicious!)
  • Commit: 300 additions in 15 minutes → 20 adds/min (normal)

max_deletions_per_min

Default: 500 lines/minute

Controls deletion velocity. Usually higher than additions since bulk deletions are more common.

ValueBehaviorUse Case
200Very strictStrict deletion monitoring
500Default (balanced)General purpose
1000LenientProjects with bulk cleanup

Timing-Based Thresholds

min_time_delta_seconds

Default: 60 seconds

Minimum time between consecutive commits. Commits faster than this are flagged as suspicious.

ValueBehaviorPattern
0Disabled(no timing check)
30Very strictFlags commits within 30 seconds
60Default (balanced)Flags rapid bursts (1/min+)
120LenientAllows faster commits
300Very lenientMust be within 5 minutes

Suspicious patterns:

  • Commits at 0:00, 0:01, 0:02 (1/second) = extremely suspicious
  • Commits at 0:00, 0:01, 0:02, 0:03 (1/minute) = suspicious
  • Commits at 0:00, 1:00, 2:00 (hourly) = normal

Note: Set to 0 to disable timing checks entirely.

File Dispersion Thresholds

max_files_per_commit

Default: 50 files

Controls how many files can be modified per commit before flagging as suspicious.

ValueBehaviorUse Case
20Very strictStrict focused commits
50Default (balanced)General purpose, most projects
100LenientLarge features, monorepos
200+Very lenientMajor refactors, migrations

Suspicious patterns:

  • Single commit modifying 100+ files = very suspicious
  • Single commit modifying 30+ unrelated modules = suspicious
  • Single commit modifying 5-10 related files = normal

Examples:

  • Feature: backend/auth/ (10 files) + frontend/auth/ (8 files) = 18 files (normal)
  • Refactor: {100+ files scattered across codebase} (very suspicious)

Ratio-Based Thresholds

max_addition_ratio

Default: 0.95 (95%)

Controls the maximum percentage of additions vs total changes. Heavily additions-weighted commits are suspicious.

ValueBehaviorInterpretation
0.8080% additionsVery strict (mostly deletions tolerated)
0.9090% additionsStrict
0.9595% additionsDefault (balanced)
0.9999% additionsVery lenient (almost all additions OK)

Calculation: additions / (additions + deletions)

Examples:

  • Commit: 1000 additions, 10 deletions → 99% additions (suspicious!)
  • Commit: 500 additions, 500 deletions → 50% additions (normal)
  • Commit: 100 additions, 200 deletions → 33% additions (normal)

Why it matters:

  • AI-generated code is typically additions-heavy (copy-paste, no cleanup)
  • Human code is more balanced (refactor, delete old code)

min_deletion_ratio

Default: 0.95 (95%)

Controls deletion ratios. Mostly-deletion commits are suspicious (bulk deletes).

ValueBehaviorInterpretation
0.8080% deletionsStrict
0.9595% deletionsDefault (balanced)
0.9999% deletionsLenient

Usually less important than max_addition_ratio since bulk deletions are more legitimate.

min_commit_size_ratio

Default: 100 lines

Minimum total lines in a commit for ratio analysis to apply. Small commits skip ratio checks.

ValueBehaviorUse Case
50Very strictCheck all commits
100DefaultSkip tiny commits
200LenientOnly analyze large commits

Precision Analysis Threshold

enable_precision_analysis

Default: true (enabled)

Enables the precision/consistency detection strategy that flags overly mechanical code patterns.

ValueBehavior
trueAnalyzes code precision/consistency
falseDisables this strategy

When to disable:

  • Projects with strict code style that looks "too perfect"
  • Scaffolding-heavy projects
  • Generated code that's intentionally uniform

Configuration Presets

Preset 1: Sensitive (High Sensitivity)

For strict AI detection, catching subtle patterns:

YAML
thresholds:
  suspicious_additions: 300
  suspicious_deletions: 500
  max_additions_per_min: 50
  max_deletions_per_min: 200
  min_time_delta_seconds: 30
  max_files_per_commit: 20
  max_addition_ratio: 0.80
  min_deletion_ratio: 0.95
  min_commit_size_ratio: 50
  enable_precision_analysis: true

Use when:

  • Code quality is critical
  • Want to catch even subtle AI patterns
  • Research or trusted team environments

Tradeoff: More false positives to catch more suspicious commits.

Preset 2: Balanced (Default)

The default configuration, good for most projects:

YAML
thresholds:
  suspicious_additions: 500
  suspicious_deletions: 1000
  max_additions_per_min: 100
  max_deletions_per_min: 500
  min_time_delta_seconds: 60
  max_files_per_commit: 50
  max_addition_ratio: 0.95
  min_deletion_ratio: 0.95
  min_commit_size_ratio: 100
  enable_precision_analysis: true

Use when:

  • General-purpose detection
  • Want balanced sensitivity
  • Most projects

Preset 3: Lenient (Low Sensitivity)

For projects with legitimate large commits or rapid development:

YAML
thresholds:
  suspicious_additions: 1000
  suspicious_deletions: 2000
  max_additions_per_min: 200
  max_deletions_per_min: 1000
  min_time_delta_seconds: 120
  max_files_per_commit: 100
  max_addition_ratio: 0.98
  min_deletion_ratio: 0.99
  min_commit_size_ratio: 200
  enable_precision_analysis: false

Use when:

  • Large monorepos with legitimate big commits
  • Automated tools generate frequent bulk changes
  • Want minimal false positives
  • Trust development team

Tradeoff: May miss AI-generated code.

Preset 4: Experimental (Very High Sensitivity)

For research or maximum AI detection possible:

YAML
thresholds:
  suspicious_additions: 200
  suspicious_deletions: 300
  max_additions_per_min: 25
  max_deletions_per_min: 100
  min_time_delta_seconds: 15
  max_files_per_commit: 10
  max_addition_ratio: 0.70
  min_deletion_ratio: 0.90
  min_commit_size_ratio: 20
  enable_precision_analysis: true

Use when:

  • Research projects
  • Want to maximize AI detection
  • Willing to accept high false positive rate

Tuning Your Thresholds

Step 1: Start with a Preset

Begin with one of the presets above matching your project type.

Step 2: Run Analysis

Analyze your repository with the preset:

Bash
cadence analyze /repo --config cadence.yaml

Step 3: Evaluate Results

Review the flagged commits:

  • Are they legitimate? (False positives)
  • Are they suspicious? (True positives)
  • Are you missing flagging legitimate AI code? (False negatives)

Step 4: Adjust and Re-run

Based on results, adjust thresholds:

YAML
# If too many false positives:
suspicious_additions: 750  # Increase
max_additions_per_min: 150   # Increase

# If too many false negatives:
suspicious_additions: 350   # Decrease
max_additions_per_min: 75    # Decrease
max_files_per_commit: 35     # Decrease

Impact Analysis

Changing suspicious_additions

ValueFalse PositivesFalse NegativesRecommended For
300HighLowStrict projects
500MediumLowMost projects (default)
1000LowHighLarge projects

Changing max_additions_per_min

ValueFalse PositivesFalse NegativesRecommended For
50HighLowStrict projects
100MediumMediumBalanced (default)
200LowHighAutomated tooling

Changing min_time_delta_seconds

ValueFalse PositivesFalse NegativesRecommended For
30MediumLowStrict timing
60MediumMediumBalanced (default)
120LowMediumLenient timing
0 (disabled)N/AHighIgnore timing

Environment Variable Equivalents

All thresholds can be set via environment variables with the CADENCE_THRESHOLDS_ prefix:

Bash
export CADENCE_THRESHOLDS_SUSPICIOUS_ADDITIONS=350
export CADENCE_THRESHOLDS_MAX_ADDITIONS_PER_MIN=75
export CADENCE_THRESHOLDS_MIN_TIME_DELTA_SECONDS=45

Example full environment:

Bash
export CADENCE_THRESHOLDS_SUSPICIOUS_ADDITIONS=500
export CADENCE_THRESHOLDS_SUSPICIOUS_DELETIONS=1000
export CADENCE_THRESHOLDS_MAX_ADDITIONS_PER_MIN=100
export CADENCE_THRESHOLDS_MAX_DELETIONS_PER_MIN=500
export CADENCE_THRESHOLDS_MIN_TIME_DELTA_SECONDS=60
export CADENCE_THRESHOLDS_MAX_FILES_PER_COMMIT=50
export CADENCE_THRESHOLDS_MAX_ADDITION_RATIO=0.95
export CADENCE_THRESHOLDS_ENABLE_PRECISION_ANALYSIS=true

Configuration File Format

Use cadence.yaml:

YAML
thresholds:
  suspicious_additions: 500
  suspicious_deletions: 1000
  max_additions_per_min: 100
  max_deletions_per_min: 500
  min_time_delta_seconds: 60
  max_files_per_commit: 50
  max_addition_ratio: 0.95
  min_deletion_ratio: 0.95
  min_commit_size_ratio: 100
  enable_precision_analysis: true
Repository Typesuspicious_additionsmax_additions_per_minmax_files_per_commitmax_addition_ratio
Small project300-40050-7520-300.80-0.90
Medium project500100500.95
Large monorepo1000-1500150-20075-1000.97-0.99
Build/generated2000+300+150+0.99+

Monitoring Threshold Impact

To see how threshold changes affect analysis:

Bash
# Run with verbose output
cadence analyze /repo --config cadence.yaml --verbose

# Shows which thresholds triggered for each flagged commit

See Also