TL;DR — Six shipments across Shopify and Claude Code, all of them the kind of primitive you stop noticing the day after you install it. POS pickup orders, defer permissions for headless agents,
/poweruplessons, 500K-char MCP results, native theme Rollouts, and Capital remittance via Payments rolled out nationwide.
The theme
Every item this week is a primitive the operator running the platform already knew they needed. Nothing on this list is a new category — they are the missing rungs on existing ladders. Retail staff have been losing stockout sales at the register for a decade; headless Claude Code workers have been choosing between bypassing permissions and blocking; MCP servers have been truncating schemas mid-response; Shopify merchants have been paying third-party apps to schedule a Friday banner swap. This week, all four of those paper cuts got a first-party fix.
The pattern worth naming is that platform teams are finally shipping for their operators, not just their end users. A POS cashier, a headless agent author, an MCP server maintainer, a merchant's accountant — these are the people who keep the lights on, and all six of these releases make one of their recurring frustrations go away. None of them will drive a press release. All of them will move a number in Q2.
1. Shopify POS Pickup Orders: BOPIS Without Apps (original)
Overview
A customer walks in, finds the shirt, and the size they need is in the stockroom, at a sister store, or sitting in a damaged box. Until now the POS offered two outcomes: hand them the bag or send them to the website. The new pickup-order flow gives staff a third option — ring it at the register, mark it as pickup, and the customer returns when the item is staged. Stockouts at the register are the highest-intent moment in retail, and most stores were losing those sales because they had no path between "here" and "online." This closes the gap without an app.
Technical
The flow lives at Cart → Customer info → Delivery method → Pickup in Shopify POS. The order is created with fulfillment_status: unfulfilled and a "pick up at this location" delivery method. Three prerequisites: local pickup enabled at the location with hours and instructions set under Settings → Shipping and delivery → Local pickup; inventory visible to the fulfilling location (same store's stockroom works by default, a sister store needs that location enabled with inventory visibility); and a customized "Order pickup ready" notification template, because the default copy is bland.
Staff workflow at the register: add items, add customer, pick pickup delivery, take payment, print the receipt with a pickup reference number. The order shows in the normal Orders list with a Pickup tag. Mark ready fires the notification, and Mark as picked up closes it. You can split a cart so two items go in the bag and one stays for pickup — two fulfillment lines, one order. Refunds before pickup auto-release the inventory commitment. No-shows do not auto-cancel, so wire a Flow workflow on fulfillment_event_created = ready_for_pickup with a 14-day reminder and 21-day stale tag. Reporting lives in two places — pickup orders count as in-store sales in POS reports, but fulfillment is tracked separately under Analytics → Local pickup. Tell your finance person which report answers which question before they catch a double-count.
Takeaway
Enable local pickup at your busiest location this week, rewrite the pickup-ready notification in your own voice, and run one practice order with your floor staff. Within a month, ask staff to tally stockout walkouts and compare against your pickup count. The delta is found revenue, and the flow costs nothing to turn on.
2. Claude Code Adds Defer Permissions for Headless Sessions (original)
Overview
If you run Claude Code in headless mode — -p, the SDK, any background worker without a human at the keyboard — you have hit the wall where the model wants to do something that needs approval and your script either explodes or bypasses permissions entirely. Claude Code 2.1.89 ships the two primitives that make pause-and-resume agents actually work: a "defer" permission decision for PreToolUse hooks, and a new PermissionDenied hook that fires on auto-mode classifier denials. Together they convert a hard fail into a structured wait, which is the difference between "toy autonomous worker" and "production autonomous worker."
Technical
A PreToolUse hook can now return {"permissionDecision": "defer"}. The headless session pauses at the tool call and exits cleanly. You resume with -p --resume <session> and the hook re-evaluates. The pattern this enables: your hook checks Slack, a webhook, or a Redis flag; if the answer is "not yet," it defers; a cron re-runs -p --resume every minute; when the flag flips, the tool call proceeds from exactly where it paused. Before 2.1.89, the only options were --dangerously-skip-permissions or blocking the entire session on human approval. Neither was acceptable for batch workers.
PermissionDenied fires after classifier denials and can return {"retry": true} to tell Claude to try again — useful when the model picks a slightly-wrong invocation and your hook can rewrite it instead of failing the turn. The same release adds MCP_CONNECTION_NONBLOCKING=true to skip MCP connection waits in -p mode and bounds --mcp-config connections at 5 seconds, so a flaky server no longer hangs your startup. Allow rules for Edit(//path/**) and Read(//path/**) now check resolved symlink targets, which lets you tighten rules you had to loosen to work around symlinks. -p --resume stops hanging on >64KB deferred tool inputs, -p --continue correctly resumes deferred tools, and autocompact thrash detection stops the "compact three times in a row" API-burn loop with an actionable error. The StructuredOutput schema-cache bug that caused ~50% failure rate across multiple schemas is also fixed — if you batch structured outputs, this is your release.
Takeaway
Draft a defer-based approval flow for one background worker this week. Even without Slack wiring, designing the flow will show you which tool calls actually need approval and which were getting auto-allowed by accident. Pair it with PermissionDenied anywhere you have seen a classifier deny a command you actually wanted — hard failures become retries, and you stop losing turns to fixable invocation drift.
3. Claude Code /powerup Teaches Itself With Animated Demos (original)
Overview
Claude Code 2.1.90 shipped /powerup, a slash command that runs interactive lessons inside your session with animated demos of features you probably forgot existed. Hooks, skills, worktree subagents, resume-picker tricks, plan mode, agent teams. It is the first developer tool I have used that teaches itself well, and it lands in the same release that fixed auto mode so it actually respects boundary phrases like "don't push."
Technical
/powerup is a tutorial, not a help command. Pick a topic, and it walks through a feature with live keystrokes, streaming output, and inline annotation so you see how the feature feels instead of reading a paragraph about it. Lessons run three to five minutes and you can quit any time. Topics currently cover hooks, skills, custom slash commands, plan mode, the resume picker, agent teams, and worktree isolation. The reason it matters: Claude Code's feature surface has been growing fast, and nobody is reading every release note — /powerup is the answer to "I shipped a feature, now teach it without making anyone read docs."
The larger fix in 2.1.90 is that auto mode now respects explicit user boundaries for the rest of the session. Before this, if you said "don't push," auto mode could still push when permission rules allowed it. That is the kind of bug that erodes trust exactly once — overdue and welcome. Other fixes: Edit/Write no longer fail with "File content has changed" when a PostToolUse format-on-save hook rewrites between consecutive edits, which removes months of Prettier/Black/gofmt paper cuts. PreToolUse hooks that emit JSON to stdout and exit code 2 now correctly block the tool call instead of silently downgrading to a warning — re-test any scope-fence hooks, they may now block where they were letting things through. --resume no longer causes a full prompt-cache miss on the first request for users with deferred tools, MCP servers, or custom agents, a regression from 2.1.69 that was costing real money on long sessions. The April 1 release also includes /buddy, an April Fools' creature-hatching command — run it once, then /buddy it away.
Takeaway
Run /powerup end-to-end this week and pick three lessons covering features you have not used. There will be three — 15 minutes of investment pays back immediately. If you run anything in auto mode, re-test your boundary phrases on this version. The "don't push" fix is the kind of change that should make you sleep better.
4. Claude Code MCP Tools Now Pass 500K-Char Results (original)
Overview
If you have ever wired an MCP server to a database and watched Claude Code truncate a describe schema response into uselessness, 2.1.91 is for you. MCP tools can now annotate individual responses with _meta["anthropic/maxResultSizeChars"] to override the default persistence cap, up to 500K characters. The same release lets plugins ship executables under bin/ and call them as bare Bash-tool commands, closing a long-standing gap in plugin distribution. Both changes are operator-grade — they do not look like much in the changelog but they unblock real workflows that had no clean workaround.
Technical
The result-size override is per-tool-call, not per-server, and that distinction matters. Your MCP server decides on each response whether this particular result deserves a bigger budget. Schema introspection? Yes. Every product in the catalog? Probably not. In your MCP server:
javascript
return {
content: [{ type: "text", text: schemaDump }],
_meta: { "anthropic/maxResultSizeChars": 500000 }
};
500K is the ceiling, and smaller numbers are polite. Four caveats before you sprinkle this everywhere: it is opt-in by the server so a naive author can sandbag your context budget by setting 500K on every response — audit before you trust; it bypasses the token-based persist layer by design, so pair it with disableSkillShellExecution (also new) and tight permissions.deny rules when exposing arbitrary MCP servers to a session; pair it with the Knowledge MCP pattern so top-N document bodies fit in a single response instead of getting cut mid-paragraph; and disableSkillShellExecution itself turns off inline shell in skills, custom slash commands, and plugin commands — set it when running untrusted plugins as your second-best mitigation after just not installing them.
The plugin bin/ change is how Homebrew has worked for a decade and it is overdue. Drop a binary or script into <plugin>/bin/, and your plugin's slash commands call it as a bare command. A worked example: a "fly-deploy" plugin that needs flyctl. Before 2.1.91 you wrote install instructions in your README. After 2.1.91 you ship a wrapper at bin/fly-deploy that plugin commands call directly, and users install nothing else. The plugin becomes a self-contained unit — a meaningful step toward plugins as distributed software instead of glorified prompt collections. The release also fixes transcript chain breaks on --resume that silently lost conversation history when async transcript writes failed.
Takeaway
Audit your custom MCP servers this week. Find every tool whose default response gets truncated, decide whether it deserves the override, and set it explicitly per-tool with a comment justifying the size budget. If you maintain plugins, move helper scripts into bin/ and rev your manifest — your users stop hitting "command not found." Both changes pay back on day one.
5. Shopify Rollouts: Schedule and A/B Test Theme Changes (original)
Overview
Rollouts is the native theme scheduling and A/B testing layer Shopify should have shipped three years ago, and it kills two-thirds of what merchants pay third-party CRO and scheduling apps for. Take a draft theme, stage it to go live at a specific time, run it as an experiment against real shoppers, or run a temporary swap that auto-reverts on a schedule. Three modes, one feature, all three previously the domain of paid apps like Theme Scheduler, Intelligems, Shoplift, and Convert. The category it kills hardest is scheduled merchandising apps — the $30/month tools you pay to swap your hero banner at midnight on Black Friday. A/B testing is more of a starter and does not yet match Intelligems on reporting depth, but for most brands without a dedicated CRO function, native is good enough.
Technical
Rollouts lives under Online Store → Themes → Rollouts. Scheduled mode picks a start time, the draft replaces live at that moment, and an optional end time triggers auto-revert — classic use case is a holiday sale theme that goes live Friday 12:01 AM and reverts Monday 11:59 PM with nobody awake to push a button. Experiment mode serves the draft to a configurable traffic percentage (50/50 default) for a configurable duration, tracks conversion rate, revenue per visitor, and AOV across variants, and surfaces a winner panel. Significance uses a Bayesian model showing "probability variant B beats A" — read above 95% as ship it, below 80% as inconclusive. Promotional mode is Scheduled with a built-in revert clause and an audit-log label for intent-clear "this was a 4-day promo" documentation.
Rollouts operate at the theme level, not the section level — you duplicate the theme, change one section, run the experiment. Fine for big changes, clunky for button colors. Sample size warnings trigger below roughly 5,000 sessions per variant per week, so small stores should use Scheduled and judge by gut. Tracked events are native Shopify analytics — checkout reached, order completed, AOV — not custom events; newsletter signups need Customer Events / Shopify Pixels wiring. You can stop a rollout instantly and flip the losing variant's traffic back with no waiting period. What it does not do yet: multivariate (>2 variants), audience targeting like mobile-only, or holdout groups — keep Intelligems if you need those. A crude but working pattern for section-level experiments is a theme-settings metafield keyed conditional: {% if settings.experiment_variant == 'b' %}{% render 'hero-variant-b' %}{% else %}{% render 'hero-variant-a' %}{% endif %}, with two duplicate themes and Rollouts splitting traffic.
Takeaway
Pick one scheduled change you do manually — the Friday sale banner, the Sunday revert — and move it to a Scheduled rollout this week. Next week, run your first Experiment on a PDP layout change with a 14-day window. If you pay for a scheduled-merchandising app, your renewal is optional. If you pay for a CRO app, keep it and reassess in 90 days.
6. Shopify Capital Remittance via Payments: Now US-Wide (original)
Overview
Shopify Capital advances you a lump sum against future revenue and takes a percentage of every sale until you repay. Until recently, remittance pulled via ACH out of your business bank account, with the usual friction — failed pulls, insufficient funds, lag between sale and clawback. The new flow holds the remittance percentage directly from your Shopify Payments payout balance before it lands in your bank. Started as a state-by-state rollout, now live in every US state. Active advances migrate automatically over the next 30 days. New advances default to this flow. More convenient, slightly more dangerous if you forget how it changes your daily cash picture.
Technical
Every Shopify Payments capture now flows gross sale → Shopify fees → remittance % → your payout balance. Instead of full payout into your bank followed by an ACH pull, you see a smaller payout land already net of remittance with no follow-up debit. From a bookkeeping standpoint, cleaner — your bank stops getting two transactions per cycle and reconciliation tightens.
What to update. Daily cash dashboards: anything that treats Shopify payout as "today's revenue" will now under-report by your remittance percentage, so adjust the formula or add a line item. Your accountant's view: remittance is no longer a bank outflow, it is a holdback at Shopify — in Xero or QuickBooks, record it as a contra entry against the Capital liability, not a bank transaction, and talk to your bookkeeper before the first payout. Payout schedule is unchanged; the holdback happens before payout calculation. Refunds auto-credit the remittance for that order. The remittance number lives at Finances → Capital → Repayment, showing current advance, total repaid, remaining balance, and the actual held dollar amount from yesterday's payouts — not estimated.
Edge cases worth knowing. Multiple payment gateways: PayPal and Amazon Pay volume is not subject to the Payments-side holdback, so Shopify falls back to ACH for non-Payments remittance, and you may still see an occasional bank pull in mixed channel mixes. Chargebacks after remittance has been held do not auto-reverse the holdback — you eat the chargeback and Capital keeps running, worth knowing if you are in a chargeback-heavy category. No opt-out mid-rollout; once migrated, you stay on the new flow until the advance is repaid. You can choose old ACH only on brand-new advances by asking your Capital rep. Zero fees. One-time dashboard tune-up and a bookkeeper conversation.
Takeaway
Log in today, find your current Capital remittance percentage, and update any dashboard or spreadsheet that treats Shopify Payments payouts as gross revenue. Send your bookkeeper a one-paragraph note so the next month-end close goes smoothly. If you do not have an active advance, file this away — the flow is the default on the next one you take.
Original sources
- Shopify POS Pickup Orders: BOPIS Without Apps — originally published 2026-03-30
- Claude Code Adds Defer Permissions for Headless Sessions — originally published 2026-03-31
- Claude Code /powerup Teaches Itself With Animated Demos — originally published 2026-04-01
- Claude Code MCP Tools Now Pass 500K-Char Results — originally published 2026-04-02
- Shopify Rollouts: Schedule and A/B Test Theme Changes — originally published 2026-04-04
- Shopify Capital Remittance via Payments: Now US-Wide — originally published 2026-04-05


