<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Todd Schiller - marketplace security</title><link href="https://toddschiller.com/" rel="alternate"></link><link href="https://toddschiller.com/feeds/tag/marketplace-security.atom.xml" rel="self"></link><id>https://toddschiller.com/</id><updated>2026-10-30T00:00:00-04:00</updated><subtitle>Human ✘ Artificial Intelligence</subtitle><entry><title>This Week in Extensibility: Jagex ships an official RuneScape plugin system, Anthropic ships MCP Tasks in Claude, and Obsidian starts delisting plugins that fail its automated review</title><link href="https://toddschiller.com/blog/this-week-in-extensibility-2026-10-30.html" rel="alternate"></link><published>2026-10-30T00:00:00-04:00</published><updated>2026-10-30T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-10-30:/blog/this-week-in-extensibility-2026-10-30.html</id><summary type="html">Week of October 24 – October 30, 2026: Jagex shipped an official, in-client plugin system for RuneScape, Anthropic shipped MCP's Tasks feature in Claude's apps, Obsidian began delisting community plugins that fail its automated security review, and Cloudflare made an agent's code able to survive a crash and pause for a person's approval.</summary><content type="html">&lt;!-- markdownlint-disable MD013 --&gt;
&lt;p&gt;Jagex gave RuneScape its first sanctioned way to extend the game, a plugin system
built into the client. On letting AI agents operate the apps people already use,
Anthropic shipped MCP's Tasks feature in Claude and Cloudflare let an agent's code
survive a crash and pause for a person's approval. Marketplace owners kept raising
the security bar on the extensions they host: Obsidian started delisting plugins
that fail its automated review, and Shopify set hard 2027 deadlines to retire app
credentials that never expire.&lt;/p&gt;
&lt;h2&gt;Game modding: Jagex ships an official plugin system for RuneScape&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Jagex shipped an official, in-client plugin system for RuneScape,&lt;/strong&gt; the first
sanctioned way to extend the game from inside its own client. It
&lt;a href="https://secure.runescape.com/m=news/runescape-plugins-officially-available-now"&gt;went live on all worlds on October 19&lt;/a&gt;,
with an in-game hub where players browse and install community plugins. The first
batch was five, including a quest helper and a tile marker, but the machinery behind
them matters more. Jagex built an interface for plugins to call, added a scripting
language to the client, and routes every plugin through a moderator queue and
quality-assurance playtesting before it ships
&lt;a href="https://runescape.wiki/w/Plugin"&gt;through the mod.io platform&lt;/a&gt;. Only approved,
mod.io-published plugins run on live worlds; untrusted and in-development ones stay
on separate developer worlds that do not touch a player's account. A plugin
&lt;a href="https://www.pcgamesn.com/runescape/community-plugins"&gt;may not automate gameplay or grant an unfair advantage&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; RuneScape 3 had no equivalent to the third-party overlay client
that Old School RuneScape players have long used, and Jagex has kept outside clients
at arm's length. Building the system into the official client lets the studio offer
reviewed customization while blocking the automation it works against. The hard
problem in a competitive game is separating helping a player from playing for them,
and Jagex has now encoded that boundary in what the interface lets a plugin do.&lt;/p&gt;
&lt;h2&gt;Marketplace security: Shopify sets hard 2027 deadlines to retire app credentials that never expire&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Shopify set hard 2027 deadlines to retire App Store credentials that never expire,
and shipped the security controls it previewed last week.&lt;/strong&gt; On October 27 it
&lt;a href="https://shopify.dev/changelog/blog/app-security-updates-october-2026"&gt;published the schedule and the controls&lt;/a&gt;.
Starting January 1, 2027 a public app still using a non-expiring credential is
delisted and blocked from new installs; on January 15 affected merchants see a
warning; on April 1 the credential stops working on API calls. The controls that
shipped alongside the dates go beyond last week's preview: an app must declare which
outside servers and sites it talks to, developers must verify their identity before
installing on a development or transfer store, and a security hub gives developers a
self-check to run against their own code. The expiring-credential requirement itself
&lt;a href="https://shopify.dev/changelog/posts/expiring-offline-access-tokens-required-for-all-public-apps-as-of-january-1-2027"&gt;dates to May&lt;/a&gt;;
the deadlines are what is new.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; last week's preview now has fixed dates. Hard credential expiry
is a rule Shopify can enforce even though its apps run on the developers' own servers,
where it never sees the code.&lt;/p&gt;
&lt;h2&gt;Plugin directories: Obsidian starts delisting plugins that fail its automated review&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Obsidian began removing community plugins whose latest version fails its automated
security review.&lt;/strong&gt; The note-taking app
&lt;a href="https://obsidian.md/blog/future-of-plugins/"&gt;announced in May&lt;/a&gt; that it would scan
every version of every plugin, not just first submissions, for security problems,
code-quality issues, and malware, and post the result as a public safety scorecard.
It said existing plugins would eventually have to meet the bar but set no date. That
enforcement takes effect on October 31, 2026: a plugin whose current release still
fails is dropped from the directory and can no longer be installed from inside the
app. Copies already installed keep working, and a maintainer can fix the problems and
re-release.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; passing the automated review is now a condition of staying listed,
not a one-time gate at submission. A plugin runs with the app's reach into a user's
notes and files, so whether it still meets the bar is part of what a user trusts when
they install it.&lt;/p&gt;
&lt;h2&gt;Agents and the web: Anthropic ships MCP Tasks in Claude, and WebMCP's incubator proposes a W3C working group&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Anthropic shipped MCP's new Tasks feature in Claude.&lt;/strong&gt;
Last week the MCP project chartered a group to standardize two things: how a connected
service runs a long job for a user's agent, and how it tells the agent when something
changes. This week Claude on the web and Claude Code gained the first half, Tasks,
per the project's
&lt;a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3459"&gt;client support matrix&lt;/a&gt;
(October 28). Tasks lets an agent hand a connected service a long-running job and come
back later for the result, not only quick back-and-forth requests. It is still
pre-stable, and the matrix lists only a few clients with support, Claude alongside the
third-party MCPJam inspector. The companion half, event notifications, is
&lt;a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3415"&gt;still being written&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And the group incubating the draft WebMCP standard proposed handing it to a new W3C
working group.&lt;/strong&gt; WebMCP is a draft that lets a web page offer tools a visitor's agent can
call. At the W3C's annual gathering in Dublin (October 26 to 28), that group
&lt;a href="https://github.com/w3c/strategy/issues/576"&gt;proposed moving the work&lt;/a&gt; into an Agentic Web
Working Group, whose charter is in review, and a separate session took up
&lt;a href="https://github.com/w3c/tpac2026-breakouts/issues/84"&gt;how WebMCP fits the browser-extension platform&lt;/a&gt;.
The draft charter was &lt;a href="https://github.com/w3c/charter-drafts/pull/901"&gt;broadened during the week&lt;/a&gt;
to cover agent identity and delegation, not only WebMCP, and the editors
&lt;a href="https://github.com/webmachinelearning/webmcp/pull/326"&gt;merged rules&lt;/a&gt; for how a page can
safely let an agent use its tools when embedded in another site. WebMCP still runs only
behind origin trials or experiments in Chromium-based browsers like Chrome, Edge, and
Brave. Firefox has only an early prototype that stays off behind hidden settings, and
Mozilla's position is neutral; Safari does not implement it and Apple opposes it. So none
of this makes it a capability that works across browser engines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; on the protocol side, an AI agent can already act inside the apps
people use today, even if Tasks is pre-stable and in only a few clients. WebMCP is still
one browser family's origin trial; the W3C proposal would move its design into a
cross-vendor working group. Whether other browsers implement it is the open question.&lt;/p&gt;
&lt;h2&gt;Infrastructure: Cloudflare makes an agent's code survive crashes and pause for approval&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Cloudflare made an agent's code able to survive a crash and pause for a person's
approval.&lt;/strong&gt; On October 26 its framework for running agent code
&lt;a href="https://developers.cloudflare.com/changelog/post/2026-10-26-computer-durable-javascript/"&gt;gained two experimental abilities&lt;/a&gt;:
a run can resume after the service is redeployed or crashes, and it can pause partway
for an outside answer, for example a human approving an action, without the wait
counting against the run's time limit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; a sandbox running an agent's code on a customer's behalf can now hold
a long or risky task open for human sign-off and pick up where it left off after a
failure, enough for a multi-step workflow a person would trust it with rather than a
single quick action. Durable execution and human-in-the-loop pauses are established in
tools like Temporal and Vercel's Workflow kit; what is new is bringing them to
Cloudflare's agent-code sandbox, still experimental for now.&lt;/p&gt;
&lt;h2&gt;Also worth knowing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Minecraft shipped a new stable version of the scripting interface its Bedrock add-ons
are built on.&lt;/strong&gt; The &lt;a href="https://learn.microsoft.com/minecraft/creator/scriptapi/minecraft/server/changelog"&gt;October 27 release&lt;/a&gt;
gives add-ons a way to read and control in-game time and its events, plus finer control
over sound and experience points. Bedrock, the edition on consoles and mobile, has a
large player base, and its official add-on interface is a widely used way players
customize the game. The update is incremental.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP defined experimental, beta, and stable stages for its extensions.&lt;/strong&gt; The
&lt;a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3392"&gt;new ladder&lt;/a&gt;,
paired with a twice-yearly release schedule, sets how extensions like Tasks graduate
from experimental to stable. Within days MCP
&lt;a href="https://github.com/modelcontextprotocol/ext-skills/pull/161"&gt;applied it&lt;/a&gt;,
reclassifying its Skills extension, a way for a connected service to offer reusable
capability bundles an agent can load, to beta.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atlassian added organization-scoped distribution for marketplace apps.&lt;/strong&gt; Developers can
now &lt;a href="https://developer.atlassian.com/platform/forge/changelog/"&gt;restrict a Jira or Confluence app&lt;/a&gt;
so only members of the publisher's own Atlassian organization can install it (October 28).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The password-manager maker Dashlane documented how Chrome's extension model slows its
product down.&lt;/strong&gt; As input to a W3C Dublin discussion on the cross-browser extension platform,
Dashlane &lt;a href="https://github.com/w3c/webextensions/issues/1144"&gt;detailed concrete limits&lt;/a&gt; of the
current model (Manifest V3), including background processes that reload from scratch and
cause delays a user can feel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CopilotKit now sandboxes embedded assistant widgets by default.&lt;/strong&gt; The toolkit for
building in-app AI assistants &lt;a href="https://github.com/CopilotKit/CopilotKit/releases"&gt;changed its default&lt;/a&gt;
so a third-party interface widget an assistant embeds is isolated and cannot follow links
out of its sandbox.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;On the radar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;November 3:&lt;/strong&gt; Google releases Chrome 157 to everyone, and the WebAssembly Community Group
discusses how a web page's content security policy applies to WebAssembly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;November 5:&lt;/strong&gt; The W3C's cross-browser extensions group holds its next call.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;November 9:&lt;/strong&gt; The WebAssembly Component Model group holds its second meeting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mid-to-late November:&lt;/strong&gt; The W3C posts minutes from its Dublin meeting, including the
sessions on WebMCP and the browser-extension platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;December 1:&lt;/strong&gt; New Microsoft 365 Copilot Business licenses switch to usage-based billing
by default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;December 18:&lt;/strong&gt; Atlassian stops forwarding Forge's old full-page addresses; apps must move
to the unified building block.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;December 31:&lt;/strong&gt; Cloudflare ends bug and security fixes for the 0.x line of its Sandbox SDK.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;January 1, 2027:&lt;/strong&gt; Shopify delists public apps still using access credentials that never
expire.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;This Week in Extensibility is curated by Todd Schiller. Research, drafting, and fact
checking are AI-assisted.&lt;/em&gt;&lt;/p&gt;
</content><category term="Extensibility"></category><category term="extensibility"></category><category term="plugins"></category><category term="sandboxes"></category><category term="web standards"></category><category term="MCP"></category><category term="WebMCP"></category><category term="RuneScape"></category><category term="game modding"></category><category term="Minecraft"></category><category term="Shopify"></category><category term="Obsidian"></category><category term="Cloudflare"></category><category term="marketplace security"></category></entry><entry><title>This Week in Extensibility: Shopify asks app developers to run its new AI security scanner, the Model Context Protocol charters a Tasks and Events group to standardize how servers notify a user's agent, and Trigger.dev makes inbound webhooks a hosted service</title><link href="https://toddschiller.com/blog/this-week-in-extensibility-2026-10-23.html" rel="alternate"></link><published>2026-10-23T00:00:00-04:00</published><updated>2026-10-23T00:00:00-04:00</updated><author><name>Todd Schiller</name></author><id>tag:toddschiller.com,2026-10-23:/blog/this-week-in-extensibility-2026-10-23.html</id><summary type="html">Week of October 17 – October 23, 2026: Shopify asked every app developer to run its new AI security scanner and previewed tougher App Store requirements, the Model Context Protocol chartered a Tasks and Events working group to standardize how a connected service notifies a user's agent, and Trigger.dev turned inbound webhooks into a hosted service that verifies and routes events to customers' automations.</summary><content type="html">&lt;!-- markdownlint-disable MD013 --&gt;
&lt;p&gt;Shopify asked every developer in its App Store to run a new security scanner and
previewed stricter listing rules, after hijacked apps began sending shoppers to fake
checkout pages. The Model Context Protocol chartered a working group to standardize how
a connected service notifies a user's agent when something changes. And Trigger.dev
turned the webhooks that set off its customers' automations into a hosted service that
checks each event.&lt;/p&gt;
&lt;h2&gt;Marketplace security: Shopify asks app developers to run its new AI security scanner&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Shopify asked every App Store developer to scan their apps for vulnerabilities and
previewed stricter rules for listing one.&lt;/strong&gt; On October 20 the company
&lt;a href="https://shopify.dev/changelog/blog/securing-your-app-together"&gt;asked all developers of public apps to run its new security check&lt;/a&gt;,
which looks for weaknesses specific to Shopify apps, such as routes left open without
authentication, code that can reach another store's data, and webhooks accepted without
verifying they are genuine. Shopify also previewed platform changes it plans to make:
access tokens that expire, a restriction so an app's keys work only from the developer's
own servers, tighter limits on the code storefront apps may run, and a higher security
bar to list in the App Store. Shopify named no breach. It attributed the push to
attacks &amp;quot;increasing across the app ecosystem as AI gets better at finding
vulnerabilities,&amp;quot; while outside coverage tied the timing to hijacked apps that redirected
shoppers to fake checkout pages. The scanner itself, which Shopify
&lt;a href="https://shopify.dev/changelog/blog/build-more-secure-apps-with-shopify-s-ai-toolkit-security-check"&gt;released on October 15&lt;/a&gt;,
runs on the developer's own machine and is invoked through Shopify's AI coding assistant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; Salesforce scans the packages developers upload to it, and Atlassian
scans the Forge apps that run on its own platform. A Shopify app runs on the developer's
own servers, so Shopify never sees the code. Cloudflare shipped the same open-source,
coding-assistant check in September for its own platform; Shopify is applying the approach
to apps it does not host.&lt;/p&gt;
&lt;h2&gt;Standards: the Model Context Protocol charters a Tasks and Events group to standardize how servers notify a user's agent&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The Model Context Protocol created a working group to standardize how a connected
service runs a long task for a user's agent and how it alerts the agent when something
changes.&lt;/strong&gt; On October 20 the project
&lt;a href="https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3440"&gt;chartered a Tasks and Events working group&lt;/a&gt;
to write one standard way to do both. OpenAI already lets a user ask ChatGPT to watch a
connected app, and the app sends a signed message back when its data changes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; a user's agent has mostly had to poll a service or ask again to learn
what changed. A standard way for the service to push the change instead lets the software
a person connects notify their agent on its own, so a one-time request can run as a
standing automation.&lt;/p&gt;
&lt;h2&gt;Agents on the web: WebMCP defers hostile-page defense to a proposed W3C working group&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;WebMCP's editors merged a security section into the draft on October 20 describing risks
a web page can pose to a visitor's agent.&lt;/strong&gt; WebMCP is a draft standard that lets a web page
offer tools a visitor's agent can call. The
&lt;a href="https://github.com/webmachinelearning/webmcp/pull/334"&gt;merged section&lt;/a&gt; covers risks such
as a page feeding the agent bad instructions and a page correlating a user's data across
sites. Defending against them, it says, is &amp;quot;primarily the responsibility of the agent's own
security model rather than something this specification can normatively enforce,&amp;quot; and it
points to the proposed W3C Agentic Web Working Group as the venue for broader
standardization.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; the work of stopping a page from manipulating or tracking an agent now
falls on whoever builds the agent, not on the standard. That includes a browser's built-in
assistant, standalone agents, and AI browser extensions. The standard itself enforces no
common defense, so how well a user is protected
comes down to which agent they run.&lt;/p&gt;
&lt;h2&gt;Automation: Trigger.dev turns inbound webhooks into a hosted, verified service&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Trigger.dev began hosting and verifying the inbound events that set off its customers'
automations.&lt;/strong&gt; On October 23 it &lt;a href="https://trigger.dev/changelog/v4-8-0"&gt;shipped a release&lt;/a&gt;
that receives events from outside services such as Stripe, GitHub, and Shopify, confirms
each one is genuine, and routes it to the automation a customer has tied to it. The same
release lets a customer run an automation as a chat agent inside Slack or Linear, where
each thread becomes a live session. It streams replies and asks for approval before the
automation acts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; verifying and routing an inbound event is work most automation
platforms leave to the customer. Folding it into the platform shrinks what a customer has
to build to connect an outside service to their own automations.&lt;/p&gt;
&lt;h2&gt;Also worth knowing&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apple opposed a Chrome proposal to let extensions switch browser tabs when a user
scrolls over the tab strip.&lt;/strong&gt; At the W3C cross-browser extension group's
&lt;a href="https://github.com/w3c/webextensions/pull/1139"&gt;October 22 call&lt;/a&gt;, Apple preferred
extending an existing Firefox control for browser behaviors to adding a new one. The
group also leaned toward loading an extension with a warning rather than rejecting it
over an unrecognized manifest entry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Atlassian deprecated the product-specific way Forge apps take over a full page.&lt;/strong&gt;
Apps that fill a full page in Jira or Confluence
&lt;a href="https://developer.atlassian.com/platform/forge/changelog/"&gt;must move to a single unified building block&lt;/a&gt;;
Atlassian will forward the old addresses until December 18, 2026, then stop.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Microsoft let administrators choose which security certificates the Visual Studio Code
coding agent's sandbox trusts and route its sign-ins through a proxy.&lt;/strong&gt; In the
&lt;a href="https://code.visualstudio.com/updates/v1_143"&gt;October 21 release&lt;/a&gt;, the proxy keeps tools
running inside the sandbox from ever seeing the real credentials.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Svix opened a way for vendors to manage their customers' webhook destinations in
code.&lt;/strong&gt; The webhook provider &lt;a href="https://www.svix.com/blog/changelog-10-2026/"&gt;shipped a public interface&lt;/a&gt;
that lets a company set up and configure where a customer's events are delivered
programmatically rather than through a dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;On the radar&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;October 26:&lt;/strong&gt; The WebAssembly Component Model subgroup holds its first meeting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;October 26–30:&lt;/strong&gt; The W3C holds its annual gathering (TPAC) in Dublin, including an
October 28 session on fitting WebMCP into the browser-extension platform.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;November 3:&lt;/strong&gt; The WebAssembly Community Group will discuss how a page's Content
Security Policy applies to WebAssembly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;November 5:&lt;/strong&gt; The W3C WebExtensions Community Group holds its next call.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;December 1:&lt;/strong&gt; New Microsoft 365 Copilot Business licenses switch to usage-based
billing by default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;December 18:&lt;/strong&gt; Atlassian stops forwarding Forge's old full-page addresses; apps must
migrate to the unified building block.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;December 31:&lt;/strong&gt; Bug and security fixes end for the 0.x line of Cloudflare's Sandbox
SDK.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;This Week in Extensibility is curated by Todd Schiller. Research, drafting, and fact
checking are AI-assisted.&lt;/em&gt;&lt;/p&gt;
</content><category term="Extensibility"></category><category term="extensibility"></category><category term="plugins"></category><category term="sandboxes"></category><category term="web standards"></category><category term="MCP"></category><category term="WebMCP"></category><category term="WebAssembly"></category><category term="Shopify"></category><category term="Trigger.dev"></category><category term="Atlassian"></category><category term="webhooks"></category><category term="marketplace security"></category></entry></feed>