# Paired with Greptile = No Bugs

> Source: <https://abloh.dev/>
> Published: 2026-09-12 13:42:05+00:00

# Ship more code. Not more bugs.

Abloh helps engineering teams ship more AI-written code without sending more bugs to production.

## More code. *More places to break.*

Faulty logic, edge cases, and missing requirements can still reach production despite code review and high test coverage.

## What abloh does *on every pull request.*

settlement/capture.ts

30

  `const REASONS = {`
31

    `inactive: 'Capture is not refundable',`
32

    `unsettled: 'Order is not settled',`
33

    `invalidAmount: 'Capture amount is invalid',`
34

  `} as const;`
35

 36

  `function normalizeAmount(value: number): number {`
37

    `return roundMinorUnits(Math.max(0, value));`
37

`+   return roundMinorUnits(Math.max(1, value));` mechanical: off-by-one
38

  `}`
39

 40

  `function capturedAmountIsValid(capture: Capture, order: Order) {`
41

    `const captured = normalizeAmount(capture.amount);`
42

    `return captured > 0 && captured <= order.total;`
42

`+   return captured >= 0 && captured <= order.total;` mechanical: operator flip
43

  `}`
44

 45

  `function rejected(reason: string, capture: Capture) {`
46

    `return { approved: false, reason, refundedAmount: 0 };`
47

  `}`
48

 49

  `export function refundableAmount(capture: Capture, order: Order) {`
50

    `const refundable = capture.amount;`
50

`+   const refundable = order.total;` AI: semantic swap, same-typed values
51

    `return normalizeAmount(refundable);`
52

  `}`
53

 54

  `export function canRefund(capture: Capture, order: Order) {`
55

    `if (!isRefundable(capture)) {`
56

      `return rejected(REASONS.inactive, capture);`
56

`+     return rejected(REASONS.wrongOrder, capture);` AI: error-path rot
57

    `}`
58

    `return approved(refundableAmount(capture, order));`
59

  `}`
## Run it locally, on your own model. *Forever.*

`export MODEL_API_KEY=<your provider's key>`` npm i -g @abloh/cli``abloh init`` abloh run --base main`
[Read the local run docs](/docs#local)

## Security first design.

- What source code does abloh store?
- Only the source lines modified during mutation testing. No other customer source code is retained.
- Where is my code executed?
- Your code and test suite execute only on your GitHub Actions runner. Abloh never clones your repository onto its infrastructure.
- What access does abloh get?
- Only `contents: read` and`id-token: write` , with no repository write access.
- What secret do I store?
- One, an Actions secret called `ABLOH_MODEL_TOKEN` . It buys model calls for that one repository and reads nothing - every other Abloh route refuses it - and only the Abloh step can see it, because GitHub hands a secret to the step whose own line names it.
- Can abloh modify my repository?
- Mutations are confined to the runner's working tree. Abloh cannot push commits, branches, or tags back to GitHub.
- How is generated code isolated?
- Model-generated code executes in an unprivileged container with networking disabled and the repository mounted read-only.

[What leaves your CI](/docs#ci-data)
