Changelog
What's New
New features, bug fixes, and improvements across every release.
v1.2.7
Improved2
- Anthropic and OpenAI reuse stable prompt instructions more effectively while preserving conversation history and free switching between models and providers.
- Cache cost estimates and new usage charges account for provider-specific token counters, cache prices and streaming cache duration.
Fixed2
- OpenAI-compatible provider requests safely handle malformed Unicode without changing valid characters.
- Review assessment accepts supported heading formats and counts the overall score only from the score table.
Configuration1
- Review output budgets can be configured with `OCTOPUS_REVIEW_MAX_TOKENS`; the default remains 8,192 tokens.
Upgrade notes1
- No database migration or configuration change is required. Existing charged usage and ledger history remain unchanged.
v1.2.6
Added2
- Claude Opus 5.5 is available as an opt-in review model with native structured JSON output. Existing defaults and pinned models remain unchanged.
- Automatic [model discovery](docs/model-discovery.md) saves provider catalog results and failures for administrator review.
Upgrade notes1
- Apply the additive Opus 5.5 catalog and discovery-cache migration before updating the application and workers.
v1.2.5
Improved1
- Authorized operators can retain cash-delivery reconciliation snapshots and compare existing payment and refund receipts without replaying events. Missing or unresolved records remain visible as gaps.
Upgrade notes1
- Apply the additive retained-cash observation migration before rollout. Operator observation requires a separately verified source and project binding; this release starts no observation or collection job.
v1.2.4
Improved2
- The dashboard now guides one repository from connection and readiness through opening a pull request to its first completed review. Automatic indexing and analysis appear as preparation progress; manual preparation is optional.
- Integration cards distinguish authorized access, repository sync and webhook setup, with provider-specific checks and repair instructions.
Fixed3
- Auto Review displays the saved setting and remains editable during preparation. Indexing no longer turns a disabled setting back on.
- Failed indexing, cancellation and sync actions keep their error messages visible. Recovery links open the correct Git provider settings.
- Webhook setup checks existing repositories and preserves organization ownership and signing secrets when retrying setup.
Upgrade notes1
- Apply the additive integration setup-status and first-review completion migrations before updating review workers and the web application. Existing connections initially show unchecked setup until their next sync. The first-review milestone uses newly confirmed publication; historical reports are not backfilled. Refresh indexed help content after deployment.
v1.2.3
Added2
- Setup guides for Codex, OpenCode, Hermes Agent, OpenClaw, Cursor and Claude Code, with a shared downloadable Octopus skill and checks for the agent's actual execution environment.
- A footer banner inviting visitors to star Octopus on GitHub and support the project.
Fixed2
- Corrected Claude plugin marketplace, installation and token setup instructions. CLI skill commands now match the published native binary, and review requests are clearly distinguished from completed reviews.
- Removed the footer's "Powered by Claude" attribution.
v1.2.2
Improved1
- Forgejo's private Cloud setup now explains where to get and run the connector, with direct setup links, separate token instructions, copyable commands and clear checks for each step. Certificate and recovery guidance is grouped into expandable sections.
Fixed1
- Forgejo webhook instructions now name the actual event selections for pull request changes, new commits and review commands. Repository setup accounts for indexing that starts automatically and Auto Review already being enabled.
v1.2.1
Fixed1
- Clarified the homepage Cloud card: Octopus is hosted for you, while private LAN/VPN Forgejo instances need a local connector.
v1.2.0
Added3
- Octopus Cloud can review repositories on private LAN/VPN Forgejo instances through a local outbound connector. Forgejo stays private and its personal access token stays on your machine. Both Forgejo and the connector need outbound HTTPS access to Cloud; code and review context are processed by Octopus Cloud and configured AI services.
- Choose clearly separated Forgejo setup paths: [Cloud + public HTTPS](https://octopus-review.ai/docs/integrations#forgejo-cloud-public), [Cloud + private LAN/VPN with a connector](https://octopus-review.ai/docs/integrations#forgejo-cloud-private), or [self-hosted Octopus + direct private access](https://octopus-review.ai/docs/integrations#forgejo-self-hosted). The website, onboarding emails and help content use the same distinction.
- Connector settings show connection status and support token rotation and disconnection. An uncertain Forgejo write pauses the connector until an administrator checks the result and resumes it.
Upgrade notes1
- Apply the additive connector schema and guarded email-template migrations before updating the web application and review workers. Customized email bodies and delivery settings remain unchanged. Refresh indexed help content after deployment.
v1.1.1
Fixed2
- Recognize Stripe `pyr_` refunds when delivering cash conversions to Unified Ads, preserving individual refund IDs and original-payment validation. Previously blocked deliveries still require deliberate recovery.
- Add an authenticated preview and guarded retry for refunds blocked before transport by reference validation; reuse the delivered original purchase without replaying it or changing credits.
v1.1.0
Added3
- Connect self-hosted Forgejo repositories with a personal access token and signed webhooks. Octopus can sync repositories, review pull requests, post comments and publish commit statuses.
- Self-hosted Octopus can reach private LAN or VPN Forgejo instances through an explicit HTTPS-origin allowlist, with verified TLS and support for trusted internal certificate authorities. See the [Forgejo setup guide](https://octopus-review.ai/docs/integrations#forgejo).
- Forgejo setup is included in the dashboard, marketing pages, help content and onboarding emails.
Upgrade notes1
- Apply both Forgejo database migrations before updating the web application and review workers. The email migration updates untouched system-template defaults and preserves customized bodies and delivery settings. Refresh indexed help content after deployment; see the [content audit](docs/plans/forgejo-content-audit.md).
v1.0.161
Fixed1
- Saving with auto-reload enabled and no saved payment method now opens Add card. See [Credits & Billing](/docs/pricing) for the card setup and settings save flow.
v1.0.160
Fixed1
- Consented visit collection now waits briefly for Redis to connect after startup, avoiding temporary rejections while preserving rate limits and outage protection.
v1.0.159
Added2
- Choose usage analytics and advertising measurement separately, and change or withdraw optional consent from Privacy choices.
- Operators: optional consented visitor and verified signup/payment attribution in Unified Ads, with durable retries and unchanged sales/refund identities and currencies. Apply both additive tracking migrations and agree the LIVE enrollment and new-events cutoff before activation; see [setup and rollback](docs/unified-ads-tracking.md).
v1.0.158
Added1
- Operators: optional hosted delivery of registrations, Stripe-confirmed cash payments and successful individual refunds to Unified Ads, with durable retries and separate TEST/LIVE sources. Apply the additive marketing conversion migration before enabling delivery; see [setup and limits](docs/unified-ads-conversions.md). Receiver totals are observed product events; ad attribution and ad-network forwarding are separate capabilities.
Fixed1
- Native CLI 0.5.1 finishes writing onboarding JSON before it exits, so coding agents receive complete onboarding results when capturing output through a pipe.
v1.0.157
Added3
- Native CLI 0.6.0 signs in once as a user. Use `octp org list --json` and per-command `--org <slug|id>` across current memberships; repository setup infers a unique organisation or returns choices before starting work.
- CLI browser approval no longer asks new user sessions to select an organisation. Sessions expire after 30 days; logout, revocation and membership removal invalidate derived organisation access. Existing organisation tokens and legacy device clients remain supported.
- Operators: apply the additive `20260912005000_cli_user_sessions` migration through the normal backup/migration/deploy gates before publishing CLI 0.6.0. The previous app remains compatible with the expanded schema.
v1.0.156
Fixed1
- CLI onboarding reuses the active repository when an inactive historical record shares its GitHub name, avoiding a failed connection or an unnecessary access prompt. Dismissed-only repositories remain dismissed. No database migration is required.
v1.0.155
Fixed3
- GitHub summaries now offer one Review history link to a readable page with saved results, dates and commits. JSON is an explicit download; existing record links open the readable page in browsers.
- Removed blanket sign-in and organisation-access notices from summary comments. Actual access checks remain on the review page and exports.
- Operators: immutable records, coverage, scores and tenant boundaries are preserved. React is aligned with the existing React DOM patch version for server rendering. No database migration is required.
v1.0.154
Fixed1
- GitHub review summaries escape literal pipes in supported prose code spans for strict evidence readers; see the [publication contract and limits](docs/review-coverage.md#limits-and-follow-up-work). No database migration is required.
v1.0.153
Added2
- Give your coding AI a copyable homepage prompt to install octp and connect, index and analyse the GitHub repository in your current project. You approve sign-in and GitHub access using direct links; the AI continues setup through the CLI.
- Native CLI 0.5.0 adds `octp onboard --agent --json` with resumable server status and explicit next actions. Existing CLI installers remain available.
v1.0.152
Fixed3
- Compact review summaries use plain record links and a short history list that strict evidence readers can consume. Invalid assessments remain unscored.
- Operators: publication recovery still recognizes existing summary references; archived attempts and current-head publication checks are unchanged. No database migration is required.
- Clarified where review explanations belong so re-review commentary does not follow the findings count table without a section heading. Invalid or inconsistent assessments still receive no overall score.
v1.0.151
Added2
- Eligible oversized reviews can supply the complete diff when the selected model's measured input, output, cost and execution limits allow it. Explicit input limits remain in effect; counting alone never produces a score.
- Operators: see [measured complete review admission](docs/measured-review-capacity.md) for eligibility, limits, billing attribution and expiry handling. No database migration is required.
v1.0.150
Fixed2
- Incomplete reviews distinguish a deliberately withheld score from malformed output. A valid partial-input response stays unscored, while malformed findings and interrupted provider calls retain their own failure reasons.
- Operators: response validation is recorded independently from input coverage, actual request provenance and provider completion. Complete reviews still require a valid numeric assessment; input limits, exclusions and severity/confidence gates remain in effect. No database migration is required.
v1.0.149
Fixed2
- GitHub reviews recognize declared binary JPEG images, TTF/WOFF2 fonts and ZIP archives alongside PNGs. Coverage explicitly excludes these assets and states that their contents were not reviewed; archives are not opened or checked for safety. Supplied text remains eligible, including code that handles these assets.
- Operators: `github-binary-assets-v2` receipts bind the asset kind to verified declarations, file metadata and exact revisions. Historical PNG receipts retain their original policy and format. Input allowances and assessment gates remain in effect; text-budget omissions can still leave a review unassessed. No database migration is required.
v1.0.148
Fixed2
- GitHub reviews recover complete newly added text files when the files API omits their patch but the full diff contains it. Recovered content must match the file's exact Git blob hash.
- Operators: recovered patches use the existing acquisition and review allowances. Binary exclusions, provider selection and completeness gates are unchanged; oversized reviews can still remain unassessed. No database migration is required.
v1.0.147
Fixed3
- GitHub reviews show coverage totals and a link to the full record instead of listing every changed file in the PR conversation.
- GitHub re-reviews reuse the existing summary through queued, running and completed states, with links to the five latest saved reviews. Stale heads or review requests cannot replace the current summary; deleted summaries are recreated.
- Operators: the full coverage manifest and immutable attempt records remain unchanged. No database migration, input-budget or review-gate change is required.
v1.0.146
Fixed4
- Reviews: a standalone Conflict Risk advisory after the Findings Summary no longer invalidates an otherwise valid review. Invalid assessments explicitly distinguish complete input from an unassessed result and show no category or overall scores.
- Operators: response validation records a specific structural failure reason without retaining response excerpts. Complete changed-file input alone cannot pass the review check; malformed findings, missing request evidence and incomplete provider responses still fail. No database migration is required.
- Reviews: hosted PR reviewers receive the changed-file visibility manifest. Explicit unsupported claims about missing content in excluded files are withheld with a verification gap and no overall score, while unrelated parsed findings remain available.
- Operators: excluded-input containment preserves the original response digest and provider receipt, keeps eligible-input coverage independent, and fails assessment rather than inventing a passing score. This bounded English claim guard does not verify arbitrary paraphrases or unseen source; repository exclusions and all severity/confidence settings remain unchanged.
v1.0.145
Fixed2
- Reviews: feedback-based suppression now checks semantic similarity, preventing search ranking alone from hiding a finding.
- Operators: feedback matching keeps the existing repository/organization scope and strict cosine threshold above 0.80. No database migration or reindex is required; failed or invalid feedback lookups retain findings.
v1.0.144
Fixed1
- GitHub reviews can assess accompanying text when an added or modified PNG has a validated provider binary declaration. Coverage lists those images as excluded and not reviewed; missing source patches and incomplete model assessments still block a complete result.
v1.0.143
Fixed2
- Reviews: moderately large PRs can supply up to 350,000 changed-source characters by default. Retrying an incomplete assessment performs a full review, retaining findings in previously omitted files and at previously commented locations.
- Operators: follow-up restrictions now require complete evidence from the preceding review request; missing or stale evidence retains full assessment. Explicit input-limit overrides and coverage/assessment gates remain in effect.
v1.0.142
Fixed1
- Review coverage tables now use ordinary Markdown instead of HTML. Attempt URLs and revision details remain visible, including in shortened GitHub comments and retries of older report formats.
v1.0.141
Fixed2
- Large pull requests now retain a complete changed-file inventory, prioritize source files, and explicitly report omitted or partial coverage. Incomplete coverage or unfinished model responses no longer receive a passing overall review score.
- Review reports preserve findings and revision details through formatting and comment-size limits. Older reviews and delayed retries cannot replace a newer review result.
Added1
- Authenticated, organization-scoped review-attempt downloads retain immutable coverage and assessment evidence for troubleshooting.
v1.0.140
Fixed1
- A repository's first pull request now waits for repository analysis even when automatic discovery has already finished indexing. Concurrent first reviews share the analysis, and waiting reviews retry automatically.
v1.0.139
Fixed3
- New GitHub repositories now start indexing automatically after connection or discovery. A first pull request also recovers a repository missed by its creation webhook.
- Pull requests against an empty initial branch can now be reviewed. GitHub's empty-tree response is no longer reported as a missing branch, while access and invalid-branch errors remain actionable.
- Empty repositories are checked again after code is pushed, and abandoned indexing jobs recover during repository discovery.
v1.0.138
Changed1
- `octp onboard`: the sign-in step opens the approval page in your browser (Enter opens it again, Esc goes back) and the sign-in choice reads "Cloud (Octopus hosted)". On Cloud the review-model step offers "Use org default" first, since Cloud reviews follow the organization's model setting; a provider picked here only overrides local `octp review` runs. Ollama (local) is offered only for self-hosted instances and unreleased providers are no longer listed. The model catalogue matches the current Cloud catalog (default Claude Opus 5; GPT-6 Astra and GPT-5.3 Codex for OpenAI).
Added1
- `GET /api/cli/models`: the organization's effective review model (provider, model, whether it is the platform default, which providers have an org API key), used by the CLI wizard for display.
Fixed1
- `octp onboard` no longer prints a React "Cannot update a component while rendering a different component" warning when no provider is selected.
v1.0.137
Added1
- The pricing page carries a Product and Offer schema (free to start, usage billed at 2x provider list price), and the blog index lists its posts as structured data.
v1.0.136
Added2
- Documentation pages (About, Pricing, Integrations, CLI, GitHub Action) now carry WebPage and breadcrumb structured data linked to the Octopus organization entity. The pricing table lists Grok 4.6 and Kimi K3 (via OpenRouter), and three docs headings are phrased as the questions people ask.
- AI search readiness: `/llms-full.txt` (full documentation text, generated from the same corpus as Ask Octopus), an Organization schema with our public profiles on every marketing page, a Blog schema on the blog index, and explicit robots rules for ChatGPT search and Bing. `/llms.txt` now lists every supported AI vendor, the GitHub Action, CLI, MCP plugin and blog.
Fixed1
- The About page, FAQ and homepage said reviews run on "Claude and OpenAI" or "Claude, OpenAI, Gemini or Qwen"; they now name all supported vendors, including Grok and OpenRouter.
v1.0.135
Added1
- GPT-6 Astra (OpenAI, released 3 September) can be chosen as the review model on Octopus Cloud or with your own OpenAI key. Listed on the pricing page at OpenAI's $10 / $50 per million tokens; the Cloud default stays Claude Opus 5.
v1.0.134
Fixed1
- Connecting GitHub on Octopus Cloud failed for every new organization since 1.0.90 (1 August). That release added a verification step to the GitHub install that needs the GitHub App's client credentials, and production never received them. The credentials are in place; the server now refuses to start on Octopus Cloud without them, the message shown to customers no longer contains self-host setup instructions, failed connect attempts are recorded with the user and organization, and an installation held by a deleted organization is released instead of blocking a new one. Affected users can connect by clicking Install GitHub App again.
v1.0.133
Added1
- Automatic repository discovery: new repositories in connected GitHub, GitLab and Bitbucket accounts are added without clicking Sync. GitHub repositories appear within seconds through the new `repository` webhook event; an hourly sweep (`REPO_DISCOVERY_CRON`, default `17 * * * *`, `off` to disable) covers every provider, and GitLab projects created after connecting now get synced and hooked. Organizations can opt out under Settings → Reviews. Freshly added repositories carry a "New" badge for a week and the list refreshes live. Existing GitHub Apps need the **Repository** event ticked once under "Subscribe to events".
v1.0.132
Fixed1
- Sign-ups from `firegameplay.com`, the sixth domain used by the September sign-up farm, are refused. Operators can now block further domains without a release: set `SIGNUP_BLOCKED_DOMAINS` to a comma-separated list and they are refused at signup, subdomains included.
v1.0.131
Added2
- Sign-ups are now capped per network: at most 5 new accounts per IP address and 15 per IPv4 /24 in any 24-hour window. Blocked attempts get a clear "try again tomorrow or contact support" message and an audit entry. Self-hosters behind a shared NAT can raise the caps with `SIGNUP_MAX_PER_IP_DAY` / `SIGNUP_MAX_PER_SUBNET_DAY` or switch the cap off with `SIGNUP_VELOCITY_CAP=off`.
- API tokens now require an account in good standing. Accounts whose device is shared across many sign-ups, or whose organization was scored as high risk at sign-up, cannot mint tokens until the organization shows real use (a connected repository, a purchase, a paid plan or its own provider key), and tokens already minted by such organizations stop authenticating with a 403 that says why.
Changed1
- The welcome credit for accounts that signed up with a magic link (no GitHub, GitLab or Bitbucket login) is now granted when the first repository is connected, not at sign-up. Accounts that signed in with a provider are unaffected. The repositories page tells pending accounts what unlocks the credit.
Fixed1
- Sign-ups from the email domain families used by the September sign-up farm are refused as disposable addresses.
v1.0.130
Added1
- Qwen3.8-Max now shows up everywhere the other review models do: the pricing page ($2 input / $6 output per 1M tokens at Alibaba's list price), the FAQ and getting-started docs, Ask Octopus, the sub-processor list (Alibaba Cloud, Singapore region) and the terms. A launch post explains what it costs and when to pick it over your default.
v1.0.129
Added1
- Alibaba Cloud Model Studio as a review provider: Qwen models (starting with `qwen3.8-max-0902`, $2/$6 per 1M tokens) via the OpenAI-compatible DashScope endpoint, with per-organization BYOK, `DASHSCOPE_API_KEY` as the platform key and `DASHSCOPE_BASE_URL` to select the China endpoint. Thinking mode follows the model default and can be switched off per call.
Changed1
- New native CLI release: `octp` 0.3.0 — re-run the installer to pick it up. The binary now ships the current model catalog (Claude Fable 5 max tier; Claude Opus 4.8 replaces 4.6), and the repository wizard opens the signed GitHub App install flow.
Fixed2
- `octp update` compares against the installed version correctly. The previous binary always believed it was 0.1.0, so it kept offering an upgrade you already had.
- The local repository index that `octp` builds no longer follows symlinks or reads files outside the repository, so a checkout cannot make the CLI read files from elsewhere on your machine.
v1.0.128
Fixed1
- The review comment's `Last reviewed commit:` line is now written from the pull request's recorded head SHA (full 40 characters) instead of whatever the model wrote; re-reviews sometimes emitted the 7-character form, which merge gates that bind a review to an exact commit reject as malformed.
v1.0.127
Fixed1
- The native CLI installer (`curl -fsSL https://octopus-review.ai/install.sh | bash` and the PowerShell equivalent) works again. It only looked at the 30 most recent GitHub releases when resolving the latest `octp` build, and platform releases had pushed the CLI release out of that window, so every install failed with no error message. The lookup now walks the release list, skips draft and prerelease builds correctly, fails with a clear message when something is wrong, and is checked daily in CI against the live API.
v1.0.126
Fixed2
- Triggering a review from the CLI or the editor plugin (`octopus_review_pr`) on a pull request whose author is blocked, whose organization has reviews paused, or which is already being reviewed now returns that reason (HTTP 422 / 409) instead of "Review started".
- Pricing docs said a 20% platform fee is applied on top of provider costs. Octopus Cloud bills usage at 2x the provider's list price; the docs and the pricing page now say so.
Changed1
- Internal helper calls (finding validation, feedback classification, blog SEO metadata) and the self-host default review model now use Claude Sonnet 5 ($2/$10) instead of Sonnet 4.6 ($3/$15). These short JSON calls run with thinking off, so Sonnet 5's adaptive-thinking default can't eat their small token budgets. Sonnet 5 and Fable 5.1 are also in the self-host catalog seed, the pricing page and the docs.
v1.0.125
Fixed3
- Merge-time indexing now applies the same rules as a full reindex: files over 100 KB and paths listed in `.octopusignore` no longer slip into the index when a merged pull request touches them. Until now, what Octopus knew about such files depended on which indexing path had run last.
- CLI chat (`octopus repo chat` and the `octopus_ask` MCP tool) now gives the model the relevant past review comments alongside code and knowledge. Those results were already being retrieved but never reached the answer.
- Repository file counts ("Files: indexed / total") no longer include directories, so the total matches the number of files actually in the repository.
v1.0.124
Changed1
- The Octopus Cloud default review model is now Claude Opus 5 (same $5/$25 price as Opus 4.8, which stays available). Organizations and repositories with an explicit model pin are unaffected. Claude Sonnet 4.6 is retired from the catalog; anything that pointed at it now uses Claude Sonnet 5 ($2/$10).
v1.0.123
Added1
- Claude Fable 5.1 (`claude-fable-5-1`) is available as an opt-in review model at $10/$50 per 1M tokens, the same price as Fable 5. The platform default is unchanged (Opus 4.8). Listed on the pricing page and in the docs; fallback pricing added so usage never bills at $0.
v1.0.122
Fixed1
- Review scores now stay consistent with the findings a review reports: when a review surfaces no blocking issues, it no longer posts a below-passing score with nothing to act on. This previously could keep a pull request under a 4+/5 quality gate even after every finding had been addressed on a re-review.
v1.0.121
v1.0.120
Added1
- A new page at octopus-review.ai/editor introduces the Octopus editor plugin for Cursor and Claude Code, with a plain-language walkthrough of how it reviews your code without leaving your editor.
v1.0.119
Changed3
- When a review is blocked because an organization is out of credits, the pull request comment now links straight to billing, so you can top up and resume reviews in one click.
- New workspaces open on a single "connect your code" step instead of an empty dashboard, and the repositories page now has a connect button when it's empty.
- If Octopus loses access to your GitHub repositories (for example when the app is uninstalled), the dashboard now shows a clear prompt to reconnect and resume reviews.
v1.0.118
v1.0.117
v1.0.116
v1.0.115
v1.0.114
v1.0.113
Changed1
- Retired the older Opus 4.6 and 4.7 models from the review-model list and re-ordered the Settings model dropdown newest-first. Organizations and repositories still set to a retired model are moved to Opus 4.8.
v1.0.112
Security1
- Updated dependencies to patch known vulnerabilities — better-auth, Next.js (Server Action SSRF/DoS), convict (via cohere-ai), and mermaid — clearing all critical advisories. Moved the shadcn CLI to dev dependencies where it belongs.
v1.0.111
v1.0.110
Added1
- Billing now shows monthly AI usage, the configured spend limit, remaining allowance, reset date, current credit balance, and auto-reload status in one responsive overview.
Fixed2
- Auto-reload can now be turned off reliably, ignores refund deductions, prevents concurrent duplicate charges, and recovers interrupted charges through Stripe webhooks and scheduled reconciliation.
- Existing auto-reload settings are paused once during the durable-payment upgrade; owners must review and re-enable them from Billing after deployment.
v1.0.109
v1.0.108
Fixed1
- The Purchase Credits dialog now shows which saved card will be charged, and the bonus percentage on the selected amount is legible again (it was green-on-green when highlighted).
v1.0.107
Added1
- Buying credits now earns a volume bonus: a $100 top-up lands $150 in credit, and larger top-ups earn more (up to 70%). A "Buy Credits" shortcut now sits on the dashboard, and the amount you'll receive — bonus included — is shown before you pay.
v1.0.106
Security2
- Banned accounts can no longer sign back in: session creation is now blocked at the auth layer for banned users (attempts are audit-logged), and the chat API additionally rejects any session issued before a ban. Previously a ban only blocked web pages, so a banned user could re-authenticate and keep calling API endpoints.
- Chat endpoints now stay on topic and on budget: a lightweight classifier turns away requests unrelated to software work (kill switch: `CHAT_SCOPE_GUARD=off`), and organizations that have never purchased credits get a daily chat spending cap (`CHAT_FREE_DAILY_CAP_USD`, default $2). Together these shut down use of the chat API as a free general-purpose LLM proxy.
v1.0.105
Security1
- Self-hosted AWS deployments now run Redis (ElastiCache) with authentication and least-privilege ACLs, rolled out through a staged, health-gated cutover. The app connects compatibly with restricted (auth-only) Redis users and cleans up stale presence entries more reliably.
v1.0.104
Security1
- AWS self-hosted deployments now support a staged managed origin-TLS boundary using an Application Load Balancer, an operator-provisioned ACM certificate, and explicit operator-maintained trusted-edge IPv4 ranges. The documented `preflight` to `enforced` cutover is health-gated and keeps rollback ordering explicit. This repository change does not alter the current WDC/datacenter deployment or cut over production traffic; Full (strict), database/migration compatibility, and the intended application image must be verified separately before an operator changes traffic.
v1.0.103
Security1
- AWS Terraform deployments no longer keep application or database secret values in Terraform state or EC2 user data. Operators pre-provision one Secrets Manager application secret, RDS manages its own master password, and the instance fetches values at runtime with exact Secrets Manager and KMS permissions, writing them atomically to a root-only environment file. A five-minute refresh is transactional and health-gated: it preserves the existing `OCTOPUS_DATA_KEY`, keeps current database credentials working after RDS rotation, and retries safely after partial failures. Existing stacks upgrade through a documented preflight stage before the enforced cutover; Docker Compose 2.30.0 or newer is required.
v1.0.102
Security1
- AWS Terraform deployments now require an encrypted S3 backend with native state locking. A new bootstrap root provisions the versioned, private, KMS-encrypted bucket and generates account-pinned configuration plus least-privilege operator IAM; existing local state has a workspace-safe migration runbook. Common saved-plan filenames are ignored because plans can retain secrets. The HTTPS guide now correctly requires origin TLS before Cloudflare Full or Full (strict).
v1.0.101
Fixed1
- Reviews interrupted by a server restart or timeout used to hang in "reviewing" with no error. They're now caught automatically: recent ones retry on their own, and older ones are marked failed with a note so you can re-trigger with a push or an @octopus mention.
v1.0.100
v1.0.99
Fixed1
- Mentioning the reviewer now points to `@octopus-review`, which links to the Octopus bot on GitHub — a bare `@octopus` linked to an unrelated account. Existing `@octopus` mentions still trigger a review.
v1.0.98
Added1
- Self-hosted deployments can now enable Sentry error, performance, and session-replay monitoring by setting `SENTRY_DSN` (and optionally `NEXT_PUBLIC_SENTRY_DSN` for browser capture). Session replay masks all text, inputs, and media, and sensitive fields are scrubbed before anything leaves the app; Sentry stays fully disabled when no DSN is configured.
v1.0.97
Security1
- AWS Terraform deployments now identify the application with a dedicated data-access security group, so RDS and optional Redis no longer trust every workload in the VPC. Existing stacks have a documented two-stage cutover that attaches the identity before removing legacy CIDR ingress. SSH stays unreachable unless an operator both configures a key pair and explicitly supplies trusted CIDRs; internet-wide SSH CIDRs are rejected.
Fixed3
- Reviews skipped because an organization is out of credits now say exactly that and point to adding credits, instead of the confusing "monthly usage limit" message — the out-of-credits and monthly-cap cases are now clearly distinct.
- Organizations that bring their own API key for the provider their reviews actually use are no longer incorrectly blocked as "out of credits"; a single relevant provider key is enough (previously keys for all providers were required at once).
- Credit top-ups that fail for a reason other than the card — a temporary processing or configuration issue — no longer show a misleading "card was declined" message. Genuine card declines are still reported as declines.
v1.0.96
Security1
- Webhook tenant isolation is now enforced (previously shadow-mode observation only). GitHub repository events route solely through the signed installation ID and the organization-scoped repository lookup, and events whose repository does not belong to that installation's organization are dropped. GitLab webhooks authenticate the per-organization hook token before the request body is read and fail closed on unknown, ambiguous, inactive, or dismissed project mappings. GitHub delivery IDs and retry telemetry remain observation-only and never influence routing. No schema behavior change beyond a new index on the GitLab webhook token lookup.
v1.0.95
Security1
- Every GitHub App installation entry point — the dashboard "Grant Access" button, the indexing-log recovery link, and the hosted CLI's repo wizard — now starts from the server-signed `/api/github/install` route instead of linking straight to GitHub, so all installs carry the browser- and user-bound signed state. Starting an install while signed out resumes the install after login, and starting one before a GitHub App is configured redirects to the integrations settings page with an explanation instead of a raw API error. A repository-wide test now enforces that raw `github.com/apps/…` install URLs appear only in the two server-owned redirect routes.
v1.0.94
Security2
- Local agent API endpoints now treat the organization API token as the security boundary: a registered agent name held by an active token can no longer be taken over or acted on by a different token in the same organization, and task claims, results, and LLM-task completions are bound to the token that registered the agent. Deleting a token frees its agent names for reuse. Agents that intentionally share one token keep sharing authority — use separate tokens for separate boundaries.
- Agent task results larger than the 1 MiB transport limit are now rejected with HTTP 413 and the task is marked failed instead of staying stuck in a claimed state. Stored results remain capped at 50 KiB, now truncated to a bounded prefix that preserves the result's JSON type, and text is sanitized so PostgreSQL-incompatible characters can no longer poison result storage. Agent endpoints reject inputs containing PostgreSQL-invalid characters (NUL, lone surrogates) with HTTP 400 before any database access — registration and heartbeat names, repository lists, and machine info, plus `agentId` lookup keys and task id path parameters across all agent routes. Posting a result to a search task, or a completion to an LLM task, that is not in claimed state now returns HTTP 409 instead of an ownership error. Malformed JSON bodies on agent endpoints are rejected with an explicit HTTP 400 `Invalid request body` (413 stays reserved for oversized bodies), and agent registration stores omitted or explicit-null machine info as SQL `NULL` rather than a JSON null value.
v1.0.93
Security1
- GitHub webhook deliveries are now recorded in a signature-verified delivery ledger that cross-checks tenant routing in shadow mode — observation only, with no change to how reviews are dispatched. Only bounded metadata is stored (never payload content), retained 30 days by default; self-hosted deployments can tune this via `WEBHOOK_DELIVERY_RETENTION_DAYS`.
v1.0.91
Security1
- OAuth connect flows for Linear, Jira, and Bitbucket now bind the sign-in state to the browser and user that started it, closing a CSRF gap when connecting those integrations.
v1.0.90
Security1
- Security-hardening pass across integration and local trust boundaries: fixed an open redirect on the post-auth return path (including a control-character bypass), tightened cookie cleanup, and locked down CI token permissions.
v1.0.89
Changed1
- Generated files — dependency lockfiles, ORM migration snapshots, test snapshots, minified/bundled output, and anything your repo marks `linguist-generated` in `.gitattributes` — are excluded from review, so a large generated file can no longer crowd your hand-written changes out of the review. Excluded files are listed in the review summary.
v1.0.88
Changed1
- Increased how much of a diff a review covers (~10×) and stopped silently truncating large diffs, so files further down a big PR are no longer skipped. When a diff is genuinely too large it now says so, instead of scoring a partial view. Tunable per deployment.
v1.0.87
Added1
- Self-hosted instances can create the required GitHub App automatically from Settings → Integrations. One button runs GitHub's App Manifest flow, stores the credentials, and takes you straight to installing it on your repositories — no more copying App ID, private key, and webhook secret into `.env` by hand. Create it under your account or a GitHub organization.
v1.0.85
Added1
- New OSS bot-account review mode: a zero-permission GitHub Action notifies Octopus, which reviews the pull request server-side and posts as a shared bot account. Because that bot is a non-collaborator, GitHub's own permissions make it comment-only — the guarantee security-conscious maintainers ask for, with no write token running in CI. Opt in per repository with a consent file.
v1.0.80
Added1
- Auto-review now skips draft pull requests and runs automatically when a PR is marked ready for review, so work-in-progress is no longer reviewed prematurely. A manual `@octopus` mention still reviews a draft on request.
Changed1
- The community daily-limit message now links to pricing, so hitting the limit points to a clear next step instead of a dead end.
v1.0.79
Added1
- Reasoning effort for extended-thinking models (Fable, Opus 5) is now configurable platform-wide and per organization, so you can trade review depth against speed and cost.
Changed1
- The default review model is now Claude Opus 4.8.
v1.0.62
Added2
- Claude Opus 5 is available as an opt-in premium review model. Your default reviewer is unchanged; point a repository at Opus 5 in settings when you want a deeper read on a tricky change (gnarly concurrency, a security-sensitive change, a big refactor). Works with your own Anthropic key too.
- Claude Fable 5, Anthropic's frontier model, is available as the top opt-in tier for the most demanding reviews.
Changed1
- The Opus review tier now costs $5 / $25 per million tokens, down from $15 / $75, matching Anthropic's current Opus pricing. Opus 4.6 is replaced by Opus 4.8 in the model list.
v1.0.58
Added4
- Reviews now learn from your team's past reviews of similar code, staying consistent with earlier decisions and no longer re-raising issues you have already settled
- Reviews now read each pull request's title and description and check the change against it — flagging changes that do not do what they claim, miss a stated requirement, or expand scope unexpectedly
- Built-in, language-aware rulepacks for TypeScript/JavaScript, Python, Go, Rust, Java, and Ruby, plus an always-on security pack covering the OWASP Top 10 and common CWE weaknesses, so reviews catch idiomatic and security issues rather than only generic ones
- Security findings now include the relevant CWE identifier where one applies
Changed4
- More accurate findings with fewer false positives: an adversarial validation step now challenges each finding and keeps only those backed by concrete evidence, and every finding — inline and in the summary — is held to the same standard
- Smarter context retrieval surfaces the most relevant code from across the entire pull request, not just the first part of large diffs
- Large pull requests now run through the full review-quality pipeline instead of a lighter path
- Routine changes (lockfiles, generated files, docs, tiny edits) use a lighter, faster model, and review prompts are cached for quicker repeat reviews on active repositories
v1.0.26
Changed2
- Login page now shows a product-highlights panel in place of the 3D scene, cutting time-to-first-paint on the login screen
- Documentation accuracy overhaul: self-hosting build/upgrade/migration steps, CLI command names, and the pricing table now match the shipped platform
Fixed1
- OAuth provider gate is evaluated per-request, so correctly configured providers no longer show "(not configured)"
v1.0.25
Fixed1
- OAuth provider gate was rendered at build time, which disabled all providers in production
v1.0.24
Added2
- Release pipeline builds a hosted-deploy image variant alongside the self-host image
- OCI `revision`/`version` image labels
v1.0.23
Fixed2
- Stripe billing hardening: pinned API version, self-healing customer records, and a webhook retry contract with idempotent per-refund accounting
- Release build fixes: build context, lockfile workspace, and registry auth
v1.0.19
Added3
Fixed9
- Finding descriptions in the review summary table are no longer truncated #515
- Embedding vector dimension is now validated against the Qdrant collection #521
- Raised max_tokens floor and enabled streaming for always-thinking models #523
- Detailed findings are now stripped correctly across more comment shapes #512
- Self-hosted web container now receives the user .env via env_file #520
- All Anthropic text blocks are collected; empty responses now fail loudly #522
- Health and readiness probes are allowed through the auth middleware #518
- Prompt variable substitution now handles special characters safely #517
- Review dedup no longer crashes on null items and preserves non-Latin keywords #516
Security1
- Moved createOrgForUser out of a "use server" module so it is not exposed as a server action #519
v1.0.18
Added3
Fixed3
Changed1
- Homepage title and meta reworked for AI code review positioning
Security1
- Public Ask Octopus widget hardened against abuse and model disclosure #405
v1.0.17
Added9
- Rate-limit team invitations to prevent email spam abuse #400
- GitLab/CLI: show OAuth redirect URI and scopes, and review unsynced PRs on demand #399
- OpenAI Codex (gpt-5.3-codex) support via the Responses API #397
- Adaptive low-credit warning threshold based on burn rate #396
- Gate chat completion on the org spend limit #385
- Microsoft social login, with Graph-based email resolution and account linking #383
- Remove and restore repositories with sync-safe dismissal #379
- Seed GPT-5 Codex and GPT-5 Codex Mini models #374
- Docs: right-side table of contents, floating Ask AI, and restructured navigation
Fixed8
- Verify "missing X" findings against the full file to kill truncated-diff false positives #392
- Encrypt per-org AI provider keys at rest and decouple the data key #395
- Bitbucket: cache repo file tree by branch HEAD SHA to stop rate limits #398
- Bitbucket: resolve integration by webhook UUID to fix multi-tenant 401 errors #382
- Qdrant: skip upsert for points with empty embedding vectors #384
- Repo graph labels and focus state now readable in light mode #386
- Email: claim credit-low cooldown atomically to prevent duplicate sends #381
- GitHub: redirect to login when the install callback has no state #380
v1.0.16
Added11
- GitLab integration: OAuth, webhook, and merge request review support #360
- Encrypt all integration OAuth tokens at rest #363
- Chat now uses the org-selected model and surfaces defaults in settings #364
- Show the resolved AI model in repository AI Models dropdowns #367
- Async community review pipeline and configurable announcement bar #358
- Admin endpoint to retry stuck PR reviews #356
- Copy button on assistant chat messages
- Open-source landing page with nav, footer, and hero links
- Announce free reviews for open source projects #345
- GitHub Action documentation page #357
- Bug bounty policy, hall of fame, and security.txt
Fixed8
- GitLab clone failing with "could not read Username" because git smart-http rejects Bearer #366
- Ask Octopus chat: cap response length and abort stream on connection close #355
- Skip credit check for community orgs to prevent cost errors #343
- GitHub Action now rejects an invalid API token instead of silently falling back to community #344
- Qdrant: retry transient network errors on upsert
- Qdrant: return empty results when the query vector is empty #342
- Escape semicolons in Mermaid sequence diagram messages
- Reset repository analysis status when a run is cancelled
v1.0.15
Added7
- Knowledge Center: pin documents to always include in every review, regardless of diff similarity #317
- Review output language: organization-level setting for the prose language of summaries, finding titles, and descriptions. Code, identifiers, and `suggestion` fields stay in the source language. #318
- Repository-level config files (`.octopus.md` / `AGENTS.md` / `CLAUDE.md`, customizable). Opt-in per repo. Each enabled repo runs the file through a sandboxed Haiku extraction pass that strips meta-instructions and emits a clean rule list, cached by content hash. Extracted rules are injected as untrusted data inside the user message, never the system prompt. #319
- Central review category list with per-category severity thresholds and a pill-style picker #330
- Landing page refresh: provider chips, new hero, and a feature switcher #334
- Explainer banner for pinned documents in the Knowledge Center #336
- Route reviews of 300+ file PRs to a dedicated internal-cli worker #309
Fixed7
- Snap findings whose line range partially misses the diff onto the nearest changed line within ±10 lines, with a small note. Previously high-severity findings could drop to the summary table even when the change was within reach. #321
- Show "✅ No new issues detected since the last review" on re-reviews with zero findings, instead of leaving the comment looking empty. #321
- Sanitize mermaid blocks in review body before posting to GitHub #310
- Gate internal-cli routing behind `ENABLE_INTERNAL_CLI` flag
- Match `.octopus-ignore` artifact directories by path segment instead of substring #328
- Tighten Ask Octopus scope guards and stop message overflow #332
- Compute resolved-finding count from outdated prior comments rather than the live set #338
Changed1
- Tighten the LLM prompt to require finding line numbers reference added (`+`) lines in the diff, not context lines. #321
v1.0.14
Added5
- Jira integration: connect a workspace, map repositories to projects, and create issues from review findings #265
- Repository graph view with structural and semantic edges #287
- "The Story" section on landing page and X (Twitter) link in footer #302
- Boot-time reconciliation of stale repository states for improved reliability #296
- Cross-process review cancellation via Redis pub/sub #294
Fixed4
Changed2
- Usage page redesigned around user-facing activities #306
- Version-update toast redesigned with a changelog link
v1.0.13
Added7
- Comparison landing pages: /compare hub, /vs-coderabbit, /vs-greptile #275
- HMAC-signed GitHub App install flow with clearer error dialogs #273
- Rotating "Ask anything" entry point in the app sidebar #279
- Help & Docs menu in the app sidebar #248
- Organization avatar upload (Cloudflare R2) #249
- Email validation and Gmail alias normalization on sign-up #264
- Refreshed landing footer social links #247
Fixed6
- Embeddings batching now respects OpenAI's 300k-token per-request limit #283
- Prevent duplicate review runs across replicas #266
- Transaction history pagination shows the correct total #263
- Balanced Mermaid activate/deactivate across alt/else branches
- Rename Mermaid sequence participants that collide with reserved keywords #250
- Chat responds in the language of the user's latest message only #254
Changed1
- SEO pass across docs and blog: canonical URLs, richer meta descriptions, BlogPosting JSON-LD, explicit AI-bot rules in robots.txt #277
Removed1
- In-app admin panel #260
v1.0.12
Added5
Fixed9
- Scope repository unique constraint to organizationId and rework Bitbucket workspace OAuth #231
- Pass orgId through GitHub OAuth state for reliable org association #207
- Org membership validation on Pubby auth and trigger endpoints #220
- Input validation on user and organization name fields #219
- Harden /api/auth/device against abuse #203
- Spend limit banner shows detailed status #215
- Event bus observer initialization race condition #209
- Issue creation dialog content overflow on long descriptions #234
- Blog slug uniqueness respects soft-deletes #233
Security1
- Remove deprecated collab integration and fix IDOR in generateIssueContent #217
v1.0.11
Added4
Fixed6
- Emit repo-analyzed event from all analysis trigger paths #200
- Improved re-review scoring and resolved findings tracking #197
- Sanitize semicolons in Mermaid and skip diagrams for docs PRs #196
- Reduce false positives in review engine prompt and validation #188
- Correct domain and page URLs in Ask Octopus system prompt
- Fallback to /files endpoint when GitHub returns 406 on large diffs
v1.0.10
Added3
v1.0.9
Added6
Fixed5
- Duplicate review guard now includes pending status #162
- Sanitize Mermaid state diagram notes and descriptions #148
- ObfuscatedEmail polymorphic tag to avoid nested anchor elements #145
- Top loader stuck on hash navigation and fast query param changes #144
- Handle PR synchronize events and post neutral check runs for blocked authors #142
v1.0.8
Added7
- CLI quick install section with bash/PowerShell installer scripts #115
- Claude Code integration docs page and footer branding
- Review processing moved to pg-boss queue with admin-configurable settings #123
- Auto-detect OS to pre-select CLI install platform tab
- AI provider logos to hero section
- Server ID to version endpoint #129
- Nginx reverse proxy config for web/review-engine routing #127
Fixed4
- CLI installer scripts now download .tar.gz archives instead of raw binaries
- Install scripts with tmpdir fix, tty prompt, and no-sudo default
- Cohere logo height alignment with other provider logos #128
- Docs path references and Windows CLI install command
v1.0.7
Added7
- Landing page overhaul with bento grid features, FAQ accordion, and Review Engine animation #108
- Email template system with database-driven templates, Resend integration, and pg-boss job queue #109
- Admin UI for email template management with AI-powered generation and bulk sending #109
- Session management page with active session list, device tracking, and revoke actions #110
- Knowledge base templates for one-click content creation with 8 pre-built templates #111
- Marketing email opt-out toggle in notification settings #109
- Rotating hero text animation on landing page #99
Fixed1
- Middleware redirect poisoning via X-Forwarded-Host header replaced with explicit URL config #113
v1.0.6
Added3
v1.0.5
Added8
- Status page system with public and admin interfaces, real-time updates via Pubby #81
- Audit logging system with admin UI and event observers #82
- Organization types (Standard/Community/Friendly) and community program management #83
- Review pipeline: cancel stuck reviews, local review API, GitHub Action endpoint, review simulator #84
- Chat repo context, multi-language translation, sidebar rename to "Ask Octopus" #85
- Billing: credit-low alerts, GitHub Marketplace webhook, usage page credit banner #86
- Linear auth error handling with reconnect UX
- CLI auto-org creation for new users
Fixed2
Changed1
- README branding image updated #74
v1.0.4
v1.0.3
v1.0.1
v1.0.0
Added7
- Onboarding tips on dashboard
- SEO metadata, OG tags, sitemap, robots.txt, and llms.txt
- Block specific PR authors from triggering reviews #27
- Dim unicorn 3D scene on text selection #16
- Social links and Product Hunt badge to landing footer #15
- Discord and LinkedIn links to landing footer #31
- Comprehensive unit test suite for core libraries #37
Fixed7
- Findings summary regex matches full table including separator rows
- Preserve review summary/score on re-review, only replace findings table
- Re-review filter updates main comment and findings count
- Per-finding feedback parsing, emoji recognition, and inline comment dedup #33
- Reset indexing status when abort controller is missing #30
- Suppress dismissed findings in Additional findings summary #25
- CI lint failures across all packages #36