Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions blog/src/_data/media.json
Original file line number Diff line number Diff line change
Expand Up @@ -3252,6 +3252,18 @@
"inline": {},
"youtube": []
},
"agent-tools-today-2026-11-02": {
"title": "Agent Tools Today, 2 Nov 2026: ChatGPT and Codex Shared Limits, Memdoor, T3 Code",
"category": "news",
"hero": {
"file": "assets/media/agent-tools-today/hero.png",
"alt": "Hand drawn sketch: a front page with five numbered lines, a clock, and a yellow character reading it out",
"prompt": "Series hero for the Agent Tools Today daily brief, drawn in code (media-src/topic-tiles.html?t=news). Reused by every brief.",
"status": "ready"
},
"inline": {},
"youtube": []
},
"the-hook-shim-pattern": {
"title": "The Hook Shim Pattern: Wiring Agent Hooks to a Live Process",
"category": "internals",
Expand Down
13 changes: 13 additions & 0 deletions blog/src/assets/media/agent-tools-today-2026-11-02/motion.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/* Bright coded scenes for "Agent tools today, 2 Nov 2026". Pairs with motion.js. */
.prose figure.mg { margin: 42px 0; }
.prose figure.mg img, .mg .mg-svg { display: block; width: 100%; height: auto; border: 1px solid #1A1320; border-radius: 18px; background: #fff; }
.mg figcaption { font: 500 13px/1.5 "Space Grotesk", system-ui, sans-serif; color: #6B5878; padding-top: 10px; text-align: center; }
.mg .mg-svg { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.mg .mg-svg text { -webkit-user-select: none; user-select: none; pointer-events: none; }
.mg .mg-hit { cursor: pointer; outline: none; }
.mg [role="slider"] { cursor: grab; touch-action: none; }
.mg .mg-ring { stroke-opacity: 0; transition: stroke-opacity 0.15s; }
.mg .mg-hit:focus-visible .mg-ring { stroke-opacity: 1; }
.mg [role="slider"]:focus-visible circle:nth-child(2) { stroke-width: 5; }
@media (hover: hover) { .mg .mg-hit:hover .mg-ring { stroke-opacity: 0.5; } }
@media (prefers-reduced-motion: reduce) { .mg .mg-ring { transition: none; } }
105 changes: 105 additions & 0 deletions blog/src/assets/media/agent-tools-today-2026-11-02/motion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
/* Bright coded scenes for "Agent tools today, 2 Nov 2026". Vanilla JS, no library.
<figure class="mg" data-scene="NAME"> holds a still image; this script swaps in a live SVG.
Plays only in view, honours reduced motion, "?mgstill" freezes each scene on its still frame. */
(() => {
const NS = "http://www.w3.org/2000/svg";
const INK = "#1A1320", YEL = "#FFCA54", BLUE = "#6C8EF5", LIL = "#B69CFF", MINT = "#7FD8AE", SKY = "#9AD8FF", SOFT = "#F1ECF9";
const SANS = '"Space Grotesk", system-ui, sans-serif', MONO = '"JetBrains Mono", ui-monospace, monospace';
const el = (t, a = {}, p) => { const n = document.createElementNS(NS, t); for (const k in a) n.setAttribute(k, a[k]); if (p) p.appendChild(n); return n; };
const txt = (p, x, y, s, a = {}) => { const n = el("text", Object.assign({ x, y, "font-family": SANS, "font-size": 24, "font-weight": 600, fill: INK }, a), p); n.textContent = s; return n; };
const cl = (v, a = 0, b = 1) => Math.max(a, Math.min(b, v));
const tf = (n, x, y, s = 1, r = 0) => n.setAttribute("transform", `translate(${x} ${y}) rotate(${r}) scale(${s})`);
const button = (g, label, fn) => {
g.setAttribute("role", "button"); g.setAttribute("tabindex", "0"); g.setAttribute("aria-label", label); g.classList.add("mg-hit");
g.addEventListener("click", fn);
g.addEventListener("keydown", (e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); fn(); } });
};

const SC = {};

/* ---- 1. three cards on a washing line, swinging in a light breeze ---- */
SC.washing = {
dur: 8, still: 8,
build(svg, api) {
const TAU = Math.PI * 2, X0 = 40, X1 = 760, Y0 = 140, SAG = 160;
const lineY = (x) => { const u = (x - X0) / (X1 - X0); return Y0 + SAG * u * (1 - u); };
// ground and posts
el("rect", { x: 16, y: 536, width: 768, height: 16, rx: 8, fill: SOFT }, svg);
[X0, X1].forEach((x) => {
el("rect", { x: x - 13, y: 132, width: 26, height: 412, rx: 6, fill: LIL, stroke: INK, "stroke-width": 3 }, svg);
el("rect", { x: x - 20, y: 122, width: 40, height: 16, rx: 6, fill: LIL, stroke: INK, "stroke-width": 3 }, svg);
});
// breeze
const gusts = [[78, 0], [108, 0.36], [486, 0.68]].map(([y, ph]) => ({ y, ph, n: el("path", { d: "M0 0 q16 -9 32 0 t32 0 t32 0", stroke: SKY, "stroke-width": 5, fill: "none", "stroke-linecap": "round" }, svg) }));
// the line
el("path", { d: `M${X0} ${Y0} Q400 ${Y0 + SAG / 2} ${X1} ${Y0}`, stroke: INK, "stroke-width": 3, fill: "none", "stroke-linecap": "round" }, svg);
[X0, X1].forEach((x) => el("circle", { cx: x, cy: Y0, r: 6, fill: "#fff", stroke: INK, "stroke-width": 3 }, svg));
// the cards
const CARDS = [
{ name: ["ChatGPT and", "Codex"], tag: ["One", "allowance"], back: YEL, chip: SKY, x: 160, n: 2, ph: 0.9 },
{ name: ["Memdoor"], tag: ["Five small", "models"], back: BLUE, chip: MINT, x: 400, n: 3, ph: 1.9 },
{ name: ["T3 Code"], tag: ["3,094 stars", "in a day"], back: LIL, chip: YEL, x: 640, n: 2, ph: 3.7 },
];
const W = 180, H = 260, TOP = 14;
const cards = CARDS.map((c) => {
const g = el("g", {}, svg);
el("rect", { x: -W / 2 - 8, y: TOP - 8, width: W + 16, height: H + 16, rx: 22, fill: "none", stroke: INK, "stroke-width": 2.5, "stroke-dasharray": "5 6", class: "mg-ring" }, g);
el("rect", { x: -W / 2 + 9, y: TOP + 9, width: W, height: H, rx: 16, fill: c.back }, g);
el("rect", { x: -W / 2, y: TOP, width: W, height: H, rx: 16, fill: "#fff", stroke: INK, "stroke-width": 3 }, g);
const ny = c.name.length > 1 ? 74 : 88;
c.name.forEach((s, i) => txt(g, 0, ny + i * 30, s, { "text-anchor": "middle", "font-family": MONO, "font-size": 22, "font-weight": 700 }));
el("rect", { x: -W / 2 + 14, y: 150, width: W - 28, height: 106, rx: 16, fill: c.chip, stroke: INK, "stroke-width": 2.5 }, g);
c.tag.forEach((s, i) => txt(g, 0, 196 + i * 30, s, { "text-anchor": "middle", "font-size": 22, "font-weight": 600 }));
// wooden peg over the line
el("rect", { x: -9, y: -24, width: 18, height: 54, rx: 5, fill: YEL, stroke: INK, "stroke-width": 2.5 }, g);
el("path", { d: "M0 -16 V22", stroke: INK, "stroke-width": 2, "stroke-linecap": "round" }, g);
el("circle", { cx: 0, cy: 0, r: 5, fill: "#fff", stroke: INK, "stroke-width": 2 }, g);
const card = { g, c, y: lineY(c.x), kick: -99 };
button(g, `${c.name.join(" ")}: ${c.tag.join(" ")}`, () => { card.kick = api.now(); api.poke(); });
return card;
});
return (t, now) => {
cards.forEach((k) => {
const s = now - k.kick, extra = s >= 0 && s < 6 ? 8 * Math.exp(-0.9 * s) * Math.sin((TAU * s) / 1.5) : 0;
tf(k.g, k.c.x, k.y, 1, 3.5 * Math.sin((TAU * k.c.n * t) / 8 + k.c.ph) + extra);
});
gusts.forEach((q) => {
const u = (t / 8 + q.ph) % 1;
tf(q.n, 90 + 520 * u, q.y);
q.n.setAttribute("opacity", Math.sin(Math.PI * u).toFixed(3));
});
};
},
};

/* ---- player ---- */
const q = new URLSearchParams(location.search), frozen = q.has("mgstill"), fixed = parseFloat(q.get("mgstill"));
const calm = matchMedia("(prefers-reduced-motion: reduce)").matches;
const mount = (fig) => {
const sc = SC[fig.dataset.scene], img = fig.querySelector("img"); if (!sc || !img) return;
const W = sc.w || 800, H = sc.h || 600;
const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, class: "mg-svg", role: "group", "aria-label": img.alt || "" });
svg.style.aspectRatio = `${W} / ${H}`;
el("rect", { width: W, height: H, fill: "#fff" }, svg);
img.replaceWith(svg);
let off = 0, raf = 0, seen = false, held = calm;
const base = performance.now(), clock = () => (performance.now() - base) / 1000;
let draw = () => {};
const frame = () => { const now = clock(); draw(held ? sc.still : (((now + off) % sc.dur) + sc.dur) % sc.dur, now); };
const tick = () => { cancelAnimationFrame(raf); frame(); if (seen && !held) raf = requestAnimationFrame(tick); };
const api = { now: clock, seek: (s) => { off = s - clock(); held = false; tick(); }, poke: () => { held = false; tick(); } };
draw = sc.build(svg, api);
if (frozen) { draw(isNaN(fixed) ? sc.still : fixed, 0); return; }
new IntersectionObserver(([e]) => {
seen = e.isIntersecting;
if (seen) { tick(); if (!fig.dataset.sent && window.posthog) { fig.dataset.sent = 1; window.posthog.capture("blog_scene_view", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } }
else cancelAnimationFrame(raf);
}, { threshold: 0.25 }).observe(fig);
svg.addEventListener("click", () => { if (!fig.dataset.hit && window.posthog) { fig.dataset.hit = 1; window.posthog.capture("blog_scene_interact", { slug: location.pathname.split("/").filter(Boolean).pop(), scene: fig.dataset.scene }); } });
frame();
};
const go = () => document.querySelectorAll("figure.mg[data-scene]").forEach(mount);
const fonts = document.fonts && document.fonts.load ? Promise.all([document.fonts.load('700 32px "Space Grotesk"'), document.fonts.load('500 20px "Space Grotesk"'), document.fonts.load('700 20px "JetBrains Mono"')]).catch(() => {}) : Promise.resolve();
const start = () => fonts.then(go, go);
if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", start); else start();
})();
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 61 additions & 0 deletions blog/src/posts/agent-tools-today-2026-11-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: "Agent Tools Today, 2 Nov 2026: ChatGPT and Codex Shared Limits, Memdoor, T3 Code"
seoTitle: "Agent Tools Today (2 Nov 2026): Launches, Skills, MCP Servers"
description: "The top launches, skills, multi agent moves, rising repos and arguments in AI agents from 1 to 2 Nov 2026, each with its source and date."
date: 2026-11-02
category: news
categoryLabel: News
type: Non-technical
series: agent-tools-today
primaryKeyword: "agent tools today 2 nov 2026"
secondaryKeywords: ["chatgpt codex shared usage limit", "memdoor team solve", "t3 code", "trigger.dev security incident", "dsh-superagent", "orca 1.4.246"]
tags: ["Daily Brief", "Codex", "Skills", "Security"]
---

Agent tools today, 2 Nov 2026, in one line: OpenAI told subscribers, by BleepingComputer's account, that ChatGPT and Codex will draw from one allowance, Memdoor showed five small models matching a published harness, and T3 Code took 3,094 GitHub stars in a day. It covers 1 to 2 Nov, checked 2 Nov. An earlier edition is [31 Oct](/blog/agent-tools-today-2026-10-31/).

[Munder Difflin](https://harnessmd.com/download) is free and open source: a desktop app that runs a team of AI agents for all kinds of knowledge work, coding included, on your own computer. It is not ranked in the lists below.

<figure class="mg" data-scene="washing"><img src="/blog/assets/media/agent-tools-today-2026-11-02/washing.png" width="1600" height="1200" loading="lazy" decoding="async" alt="Animation. On a white background, three cards hang from pegs on a washing line and swing in a light breeze. The first reads ChatGPT and Codex with a tag One allowance. The second reads Memdoor with a tag Five small models. The third reads T3 Code with a tag 3,094 stars in a day. Tapping a card makes it swing."><figcaption>The day's three lead items, from BleepingComputer's report, Memdoor's README and GitHub trending, read 2 Nov 2026.</figcaption></figure>

## Check this first

**Trigger.dev security incident.** Trigger.dev's CTO wrote on 1 Nov that it found exposure "across a subset of organizations": "The attacker gained unauthorized access to environment variables for these organizations." The company says it has blocked the exploit and "emailed all impacted account owners with steps to mitigate". The post does not say how many organizations were affected or what the exploit was, and it promises updates on the status page. See [security for AI coding agents](/blog/security-for-ai-coding-agents/). [Source](https://trigger.dev/blog/security-incident-nov-2026)

## Top 3 launches

1. **Memdoor team-solve.** Its README describes "Five small models on one programming problem", talking only through files on disk; the run used Qwen3.8-27B. On the first ten problems of a LiveCodeBench Hard list, over five passes, its README gives a mean of 9.8 of 10, against 9.6 for the original authors' harness and 8.0 for Fable 5. The Hacker News title says "beats". The README says "9.8 and 9.6 are within noise. The claim is parity with their harness." It adds that the Fable 5 column is "one call per problem, from the authors' files", and that the contests "date from spring 2025; the model may have seen them". Apache 2.0, more than 430 points on Hacker News on 2 Nov. [Source](https://github.com/guregodevo/memdoor/tree/main/examples/workflows/team-solve)
2. **dsh-superagent.** DeepSeek published a "proactive coding agent for one GitHub repository", packaged as a bundle for DeepSeek Harness. Its aim: "take as little human attention as possible, and give as much value as possible." The README also says "Research prototype for reference only, not an official DeepSeek product." MIT, created 31 Oct, more than 9,000 stars on 2 Nov. [Source](https://github.com/deepseek-ai/dsh-superagent-prototype)
3. **Uncut.** A small coding harness: "One 7 MB static binary, four tools, plain stdin/stdout." It promises "No silent context cuts": the README says the entire conversation is sent on every model call. MIT, created 1 Nov, version 0.1.1 published that day, more than 300 stars on 2 Nov. [Source](https://github.com/Balanov/uncut)

## Top 3 skills, MCP servers and plugins

1. **stack-diagram.** A skill: "Describe your stack in a sentence. Get an architecture diagram with official logos." MIT, created 1 Nov, version 0.2.0 published that day, more than 530 stars on 2 Nov. [Source](https://github.com/caru-ini/stack-diagram)
2. **AI Manju Skills.** Templates for AI comic dramas in 21 genres. Its Chinese README says each template is one `SKILL.md` file with no dependencies (our translation). MIT, created 31 Oct, more than 240 stars on 2 Nov. [Source](https://github.com/zhanghao123vip/ai-manju-skills)
3. **Claude Animated Shorts.** It says "It makes 55-70 s vertical animated story shorts", drawn with `three.js` inside Remotion. MIT, created 1 Nov, more than 210 stars on 2 Nov. [Source](https://github.com/mromidev/claude-animated-shorts)

## Top 3 moves from multi agent tools

1. **Orca 1.4.246.** Published 2 Nov. Its notes lead with Orchestrator V3, then list pull requests, including "Warn before trusting non-official plugins; review access-growing updates one by one", merge conflicts resolved "from the phone", and "Show a card in the coordinator's chat when it starts a worker". [Source](https://github.com/stablyai/orca/releases/tag/v1.4.246)
2. **Qwen Code 0.26.5.** Published 1 Nov. It "Enables Generated UI by default" and adds "an experimental one-command Helm deployment for Managed Agent". [Source](https://github.com/QwenLM/qwen-code/releases/tag/v0.26.5)
3. **GitHub Copilot CLI 1.0.106-2.** A pre release, published 1 Nov. `/resume <session-id>` now brings a running background session to the foreground, and an HTTP MCP server that never answers holds startup for its timeout once, not three times. [Source](https://github.com/github/copilot-cli/releases/tag/v1.0.106-2)

## Top 3 rising repos

1. **T3 Code.** It calls itself an "agent harness control surface". MIT, more than 38,000 stars, and 3,094 stars in a day on GitHub trending on 2 Nov, up from 930 on 31 Oct. Its 1 Nov nightly adds organization wide policies; the latest stable is 0.1.6. [Source](https://github.com/pingdotgg/t3code)
2. **Claude Code Game Studios.** "Turn a single Claude Code session into a full game development studio." MIT, more than 32,000 stars, and 967 stars in a day on GitHub trending on 2 Nov. Its last push was 19 Oct. [Source](https://github.com/Donchitos/Claude-Code-Game-Studios)
3. **AiSOC.** "Open-source AI Security Operations Center", with alert fusion and agent triage, says its GitHub description. MIT, more than 6,300 stars, and 446 stars in a day on GitHub trending on 2 Nov. [Source](https://github.com/beenuar/AiSOC)

Stars can rise for reasons other than use: names to watch, not picks.

## Top 3 things people are arguing about

1. **Will ChatGPT and Codex draw from one allowance?** BleepingComputer reported on 1 Nov that an OpenAI email says "Your use of ChatGPT and Codex will draw from the same allowance", with Unlimited Instant left out, and that OpenAI doubled Work and Codex allowances on its Pro plans from 29 Oct. SmartScope, reading OpenAI's help article, says this starts in December for Plus, Pro and Business. We could not open that article. OpenAI's [Codex pricing page](https://developers.openai.com/codex/pricing), read 2 Nov, says "ChatGPT Work and Codex share usage" and gives no date. More than 220 points on Hacker News on 2 Nov. See [Codex vs Claude Code usage limits](/blog/codex-vs-claude-code-usage-limits/). [Source](https://www.bleepingcomputer.com/news/artificial-intelligence/openai-says-its-doubling-pro-usage-limits-and-bringing-work-features-to-chat/)
2. **Does touching model training get a Claude account blocked?** One user claims so, in a post relayed by FourWeekMBA, saying "anything touching RFT, SFT, or training larger models" now gets the account blocked. FourWeekMBA found no public Anthropic statement on the account as of 1 Nov. Anthropic's [Commercial Terms](https://www.anthropic.com/legal/commercial-terms) bar using the services "to build a competing product or service, including to train competing AI models"; nothing public ties that clause to this account. Another Hacker News user reports no refusals. More than 450 points on Hacker News on 2 Nov. [Source](https://fourweekmba.com/ai-anthropic-terms-ban-training-rivals-user-says-claude-blocks/)
3. **Which JavaScript framework costs agents the least?** Nolan Lawson built the same app five times per framework and took the median; Angular failed twice, so some of its metrics use three runs. "Most clearly, SvelteKit, Gracile+Lit, and Angular are more expensive to build than the other frameworks." He warns that "everything I'm measuring is very stochastic", and that "For Nuxt, the MCP was never used by the agents." Published 28 Oct, more than 320 points on Hacker News on 2 Nov. [Source](https://nolanlawson.com/2026/10/28/the-ai-cost-of-javascript-frameworks/)

## How this list is built

For this edition, covering 1 to 2 Nov, we read the GitHub releases of tracked tools, vendor blogs and changelogs, GitHub trending, and the Hacker News front page. We did not read X or Reddit for it; one argument above starts from a post on X, read only as FourWeekMBA relays it. A name only makes a list with a link that was opened and a signal that can be shown: points, stars or a dated release. Repos are checked against the GitHub API before they appear. New here? Start with the [install guide](/blog/how-to-install-and-use-munder-difflin/).

<link rel="stylesheet" href="/blog/assets/media/agent-tools-today-2026-11-02/motion.css"><script defer src="/blog/assets/media/agent-tools-today-2026-11-02/motion.js"></script>
Loading
Loading