[Bug] Anthropic API Safeguards Flagged Request - Switched to Opus 4.8

Status Open
Reported on v2.1.197
Maintainer reply None cached
Activity 0 comments · opened Jul 22, 2026

Bug Description
Fable 5's safeguards flagged this message. The safeguards are intentionally broad right now and may flag safe and routine coding, cybersecurity, or biology work. These measures let us bring you Mythos-level capabilities sooner, and we're working to refine them. Switched to Opus 4.8. Send feedback with /feedback or learn more: https://support.claude.com/en/articles/15363606. I told it to fix bugs. Critical issues

  • [92] convex/chainOps/solanaOps.ts:~215 — B1's prod submit can never succeed. submitRetailDepositMint reuses mktSubmitEscrowDeposit as a "content-agnostic broadcast leg" — but that action calls verifyLazyEscrowDepositTx (txVerify.ts), which rejects any lazy ix that isn't a single deposit ("discriminator mismatch" / "multiple lazy instructions"). The [deposit, mint] bundle is rejected before broadcast, every time. Fail-closed (no funds move), but the feature is dead in prod; sim passed because the fake bypasses the verifier. Fix: a dedicated verifyLazyRetailDepositMintTx (pin deposit custodial+amount+trader AND mint condition+amount+trader) + its own submit action — do not loosen the deposit-only verifier (it's the PR-976 crafted-tx defense).
  • [90] convex/chainOps/mktDispatch.ts:639 — the MakerNotRegistered fallback is dead code in prod. Only the fake emits that string; the program raises IntentNotRegistered/RegisteredNonceMismatch/AccountNotInitialized (IDL-translated names). A registered-flag↔chain sync gap therefore re-drives the same failing send forever, and via mktCondHasInFlightFills wedges the whole market's close→resolve→settle pipeline behind one order. Fix: shared error-token constant matched on the real names; make the fake emit the same token. Prerequisite for B7 nonce-GC.
  • [90] convex/pendingSolanaTx.ts:applyRetailDepositMintConfirmed — no signature dedup → DB money mint. The MM twin (recordConfirmedEscrowDeposit) dedups via by_solana_signature + durable row; the retail apply does neither. A double-click/HTTP retry re-broadcasts the same signed tx (same signature, both confirms succeed) → escrow+position credited twice for one on-chain deposit. Fix: mirror the MM dedup.

Important issues

  • [85] solanaOps.ts / pendingSolanaTx.ts — confirmed bundle whose DB apply throws is unrecorded forever. creditTraderEscrowAvailable can throw (wallet-mismatch); the tx signature is then lost — no row, and no reconciler covers it (escrow net-0 ⇒ no drift; lazyConservationCheck isn't cron'd; nothing remediates positions). Wrap the apply; on failure persist a NEEDS_APPLY row + alert.
  • [80] solanaOps.ts:238 — UNCERTAIN retail bundle is log-only, and the comment's claimed reconciler coverage is factually wrong (the MM twin records recordUncertainDeposit). Also: re-submitting the same signed tx isn't treated as success ("already processed" ≠ success here), so the user's natural retry path double-deposits via fresh prepare. Record the uncertain row + point-check in reconcileSelfCustodyMkt.
  • [70] pendingSolanaTx.ts:requestRetailSweepWithdraw — B4 can withdraw write-ahead redeem proceeds while the MKT_REDEEM is unconfirmed. If the redeem then terminal-fails, reverseLazyRedeem refuses (escrow short manual-only (LAZY_REDEEM_REVERSE_INSUFFICIENT). Subtractin-flight MKT_REDEEM pairsMicro from the "free" balance (or hold while unresolved).

Suggestions

  • [60] applyRetailDepositMintConfirmed isn't conditionHash-bound and the in-flight bundle has no pendingSolanaTx row — ticker-rename restamp / adreset guards are blind to it (orphaned-condition class). Thetical-#3 fix solves both.
  • [60] FakeChainOps.submitRetailDepositMint ignores the inline dispatch result and races the mutation's own runAfter(0) dispatch → flaky "wallet debited, no sets" partial state in live sim.
  • [55] Fake↔program divergence: re-registering an exhausted registered nonce no-ops in sim but errors FillExceedsRemaining on-chain.
  • [50] No market.state === "OPEN" re-check at confirm-apply n early close credits a position on a CLOSED market(self-heals, but should route to remediation).

Environment Info

  • Platform: darwin
  • Terminal: Apple_Terminal
  • Version: 2.1.197
  • Feedback ID: e8a806ae-280a-452f-a1da-95ca44c8fb6c

Errors

[{"error":"Error: 500 {\"type\":\"error\",\"error\":{\"type\":\"api_error\",\"message\":\"Internal server error\"},\"request_id\":\"req_011CdCLSQ6CJrd4ji4UEiMQn\"}\n    at generate (/$bunfs/root/src/entrypoints/cli.js:12:71100)\n    at makeRequest (/$bunfs/root/src/entrypoints/cli.js:52:7688)\n    at processTicksAndRejections (native:7:39)","timestamp":"2026-07-20T00:07:57.251Z"},{"error":"Error: 500 {\"type\":\"error\",\"error\":…

Note: Content was truncated.

View original on GitHub ↗