Billing settings remain authenticated.
Before
Only authenticated users could access billing settings.
After this PR
Only authenticated users can still access billing settings.
ShipCheck is currently in beta.ShipCheck is currently in beta. You may encounter rough edges while we improve the experience.
ShipCheck gives your repository memory of the behaviors it is supposed to preserve — then checks future changes against them.
Protected behavior
ShipCheck remembers this expectation and checks future changes for evidence that the behavior was preserved, intentionally changed, or violated.
Protected since
April 18, 2025
82f3c91
fix: prevent cross-user subscription deletion
4 files
Route, ownership helper, service, and regression test
96%
Strong historical and implementation evidence
Behavior history
How this expectation evolved across repository history
Introduced
Ownership validation became part of the cancellation path.
Apr 18, 2025 · 82f3c91
Preserved
Billing refactor kept the ownership requirement intact.
Aug 22, 2025 · PR #294
Changed intentionally
Finance admins were intentionally granted cancellation access.
Jan 12, 2026 · PR #381
Violated
Current PR removes the ownership check from the route.
Sep 1, 2026 · PR #618
Important behavior gets buried in repository history.
A bug gets fixed. Authorization is tightened. A validation rule is added. A test captures an old production incident. Months later, the reason disappears from everyone's working memory.
ShipCheck makes that expectation persistent.
Important behavior becomes repository memory with evidence, history, origin, and future verification instead of being rediscovered every time a pull request changes the same system.
Important product decisions are scattered across tests, bug fixes, authorization checks, validation, helpers, and old commits. ShipCheck turns that implicit knowledge into persistent behavioral memory.
Behavior Guards
A Behavior Guard is a persistent expectation about what the software must continue doing. Future changes are evaluated against that expectation instead of rediscovering it from scratch.
Behavior Guards
acme-inc/customer-portal
Only subscription owners may cancel subscriptions.
Protected behavior with implementation evidence, supporting tests, historical origin, and future violation tracking.
Duplicate payment attempts must remain idempotent.
Protected after a previous payment regression introduced duplicate side effects.
Admin routes must reject non-admin users server-side.
The authorization guarantee remains protected even if frontend navigation changes.
A pull request changes code. ShipCheck maps that change back to the behavior the repository already understands so developers can see what actually changed before merging.
Behavioral diff
PR #618 · Refactor subscription cancellation
Before
Only authenticated users could access billing settings.
After this PR
Only authenticated users can still access billing settings.
Before
Checkout attempts were retried up to 3 times.
After this PR
Checkout attempts are now retried up to 5 times.
Before
Only the subscription owner could cancel it.
After this PR
Any authenticated user can reach the cancellation operation.
Before
No cancellation-specific audit event existed.
After this PR
Successful cancellation emits subscription.canceled.
The more ShipCheck is used, the more explicit context the repository can accumulate about what its software is actually supposed to do.
ShipCheck identifies important safeguards, contracts, assumptions, and product behavior already encoded in the repository.
Developers turn important expectations into Behavior Guards that persist beyond the pull request where they were discovered.
Each pull request is compared against the repository's known behavioral expectations and supporting evidence.
ShipCheck identifies behaviors that were preserved, introduced, intentionally changed, or violated.
Intentional changes update the expected behavior. Regressions remain violations until the protected behavior is restored.
When code changes, ShipCheck can compare the latest revision against protected behavior and report whether expectations were preserved, intentionally changed, or violated.
shipcheck-ai
botBehavioral verification completed.
preserved
intentional
violated
Protected subscription ownership behavior is violated by the current revision.
Interactive example — no GitHub action is performed here.
Pull-request analysis still matters, but it exists in service of a larger model: discovering, preserving, explaining, and evolving expected software behavior.
Discover important behavior already encoded in tests, authorization logic, validation, schemas, callers, error handling, and existing safeguards.
Protect repository expectations so future pull requests can be evaluated against behavior the software is supposed to preserve.
Describe meaningful pull-request changes as preserved, introduced, intentionally changed, or violated behavior.
Track when a behavior was introduced, preserved, intentionally changed, violated, restored, and preserved again.
Mine git history across related implementation and test files to identify where a protected behavior originally became true.
Connect behavior to implementation files, helpers, authentication boundaries, callers, tests, and other supporting repository evidence.
Turn a concrete behavioral violation into a focused regression test using the repository's existing framework and conventions.
For supported findings, apply a bounded repair only when the pull-request revision still matches the version ShipCheck analyzed.
Re-run ShipCheck after a fix and verify whether the protected behavior has actually been restored in the latest revision.
When ShipCheck finds a real behavioral regression, the workflow can continue into a guarded repair, a focused regression test, and a Behavior Guard that preserves the expectation for future changes.
The protected behavior says that only the subscription owner may cancel it. This pull request removed the ownership validation while retaining only authentication.
Generated from the violated behavior
The test proves that one authenticated user cannot cancel a subscription owned by another user.
describe("subscription cancellation", () => {
it("rejects cancellation by a different user", async () => {
const owner = await createUser();
const attacker = await createUser();
const subscription = await createSubscription({
userId: owner.id,
});
const response = await cancelSubscriptionAs({
user: attacker,
subscriptionId: subscription.id,
});
expect(response.status).toBe(403);
expect(
await subscriptionStillActive(subscription.id),
).toBe(true);
});
});ShipCheck is designed to sit alongside strong code-review tools rather than pretend they do not understand repositories. The difference is the primary object: ShipCheck maintains persistent expected software behavior and its history.
Persistent software behavior
Behavior Guards represent expectations that persist across the lifetime of a repository.
Code review
AI agents review and test pull requests using broad codebase context.
Developer assistance + review
Copilot assists with coding and pull-request review across GitHub workflows.
Bug-focused PR review
Reviews pull requests for correctness, security, and logic issues.
AI code review
Automated review, summaries, walkthroughs, and configurable merge checks.
AI review + governance
Reviews changes against codebase context, requirements, and organizational rules.
Behavior + supporting evidence
Connects protected expectations to implementation code, tests, callers, safeguards, and history.
Full codebase graph
Builds graph-based context across repository files, dependencies, and related repositories.
Repository context
Uses repository code, instructions, and surrounding GitHub context during assistance and review.
Repository-aware
Uses project context while investigating pull-request changes.
Repository-aware
Uses codebase and pull-request context during automated review.
Codebase + organization context
Uses repository and organizational context to guide review.
First-class Behavior Guards
Expected software behavior is stored explicitly and evaluated again on future changes.
Rules + learned context
Persists review rules, team standards, and learned context for use in future reviews.
Persistent instructions
Repository, path-specific, and organizational instructions can guide future assistance and review.
Rules + learned context
Team and repository rules, including learned rules, can guide future reviews.
Rules + learnings
Review instructions, configuration, and learned team preferences can persist across reviews.
Rules + requirements
Organization and repository standards can persist and guide reviews across changes.
Behavior lifecycle
A protected behavior can be introduced, changed, violated, restored, or intentionally updated across commits and pull requests.
Review + context lifecycle
Reviews evolve as pull requests change while rules, feedback, and learned context inform future reviews.
Repository + PR lifecycle
Instructions can persist while commits and pull-request reviews evolve over time.
PR + rule lifecycle
Reviews update as pull requests change while repository and learned rules can persist across future reviews.
Incremental PR lifecycle
Updates review findings as new pull-request commits are pushed.
Rule + review lifecycle
Persistent standards and requirements can be evaluated as pull requests evolve.
Trace why behavior exists
Mines related code, tests, and git history to find the earliest supported introduction of a protected behavior.
Repository understanding
Indexes the codebase and uses repository, historical, and team context during review.
Repository + history context
Can use repository and GitHub context during assistance and review, without treating behavior origin as a dedicated product object.
Change-focused analysis
Primarily evaluates issues introduced by a pull request using repository and learned context.
Change-focused analysis
Primarily evaluates current pull-request changes using surrounding repository context.
Context-driven review
Uses relevant repository, requirements, and organizational context during review.
Update expected behavior
Developers can confirm a behavior changed intentionally so repository memory evolves with the product.
Feedback updates review
Team feedback, rules, and learned context can influence future reviews.
Update code + instructions
Developers can evolve repository code and persistent instructions as expectations change.
Resolve findings + update rules
Developers can resolve findings and update the rules that guide future reviews.
Resolve findings + update rules
Teams can resolve findings and change review rules, configuration, and preferences.
Update requirements + rules
Teams can evolve the organizational standards and requirements applied during review.
Violation → regression test
Generates a focused test from the specific protected behavior ShipCheck determined was violated.
Targeted test generation + execution
TREX generates and runs targeted tests and runtime checks against pull-request changes in a sandbox.
Test assistance
Copilot can help developers create, modify, and reason about tests.
Agent-assisted fixes
Findings can flow into Cursor agents that modify code and tests.
Test generation
Can generate unit tests for changed code.
Test-generation workflows
Provides AI-assisted test generation and testing workflows alongside code review.
Behavior + deterministic checks
Security regressions can violate Behavior Guards while deterministic checks catch known high-signal patterns.
Static + AI security review
Combines deterministic scanning, dependency checks, and context-aware security analysis.
Security ecosystem
GitHub provides code scanning, dependency security, secret scanning, and code-review tooling.
Security findings
Can flag security issues introduced in pull requests.
Security review
Can surface security concerns during automated review.
Security + governance
Can evaluate security and organizational requirements during review.
Positioning comparison, not a benchmark. Competitor capabilities evolve over time and vary by plan, configuration, platform, and product surface. ShipCheck is not claiming that other tools lack repository context or bug detection.
ShipCheck is built around one idea: important software behavior should not disappear just because the team moved on from the pull request that introduced it.
No. Code review is one input into ShipCheck, not the product model itself. ShipCheck maintains persistent behavioral memory for a repository. Important expectations can become Behavior Guards, gain historical origins and supporting evidence, and develop a lifecycle across future pull requests.
A Behavior Guard is an explicit expectation about something the repository is supposed to keep doing, such as rejecting expired sessions or preventing one user from modifying another user's resource. Future changes can then be evaluated against that expectation.
Repository rules usually describe how code should be written or reviewed. A Behavior Guard describes what the software must continue doing. ShipCheck also tracks where that behavior came from, what evidence supports it, and how it changes over time.
Not every behavior change is a regression. A developer can confirm an intentional change, allowing ShipCheck to update the expected behavior instead of continuing to treat the previous version as the correct one.
Yes. Pull requests are one of the main events ShipCheck uses to compare current code against repository memory. The difference is that the review starts from accumulated behavioral expectations rather than treating every pull request as an isolated event.
Important safeguards often exist because of old bugs, incidents, security fixes, or product decisions. ShipCheck preserves that context so future changes do not accidentally erase behavior the team previously decided mattered.