A run that stops when it cannot work.
A run that cannot reach its agent now stops and says so, instead of quietly making work out of the error. Agent switching lives where you expect it, and a new project opens on the agents you actually gave it.
- FixA run whose agent stops answering, because a free monthly quota ran out or a provider refused, now stops after two attempts and says the board is blocked. It used to keep going on its own, turning the error message itself into new cards.
- FixAsk Lead to re-plan works on a stuck board. It used to look ignored, because it was: it did nothing and said nothing. It now either frees the board or tells you it found nothing to free.
- FixA card held back for a check reports itself in the log, so a paused board is legible instead of silent.
- FixA card parked because no one is seated for its role stays parked with a reason, instead of returning every thirty seconds to refuse again.
- FixA task can no longer wait forever on a dependency scheduled after it, which used to strand everything queued behind it.
- FixThe agent picker beside the message box now really switches agent. It used to change only the label while the previous agent kept answering.
- NewAgent switching lives in the chat picker and in Project Settings. The top bar chip is gone: outside a project it governed nothing, and inside one it disagreed with your seats.
- FixA new project opens its chat on its own seats. Seat it entirely on Copilot and it opens on Copilot, rather than on whichever agent happened to be connected.
- NewGitHub Copilot is listed first everywhere you pick an agent, matching the free sign-in path.
- FixA refusal on the operator escape path is shown rather than swallowed.
Every seat, every surface.
Every seat and every surface now tells you the truth. What a run is doing, what it could not check, and what it fixed on its own are all visible, and opening a project asks before it spends anything.
- NewOpening a project no longer starts work. Castforge reads the project state, tells you what it found in chat and on the board, and offers exactly one action. Nothing runs and nothing spends until you click it.
- NewA project state Castforge cannot read still offers you a way to arm the project, instead of leaving you on a dead screen, and the board says it is checking so an open never looks inert.
- NewRuns repair themselves. A card that reaches Done with no record of where its work was authored is named, repaired once, and reported. The board says it repaired itself, and the repair it offers is one that actually repairs.
- NewThe repair sweep says what it did, once per pass, instead of the run going quiet.
- NewA check that cannot run says so. A verify task records what it verifies rather than just what it follows, and a seat asked to check something that does not exist reports the check was impossible instead of passing by default.
- NewA verify card is wired behind the work it verifies, or nothing is wired and it says so.
- NewStop means stop. A Stop renders as a stop and carries your intent down to the sessions it meant, while a genuine failure is left to read as a failure.
- NewA Done that a later turn overtook now says so on its own face, instead of sitting there looking current.
- NewA finished card that is being revised says both, beside the Done pill rather than instead of it.
- NewFinished work is browsable. Open a completed phase and see what each card left behind, including a commit reference you can paste.
- NewUpcoming milestones open too, with derived dependencies labelled as derived, and leave out what they cannot know yet.
- NewEvery agent seat runs in its own isolated home, so a read-only role is genuinely read-only on every agent rather than only on Claude. A read-only Codex seat is not handed the server.
- NewA Codex turn carries its instructions in its per-turn config rather than on the command line, a credential refresh is visible instead of silent, and a killed process no longer leaves overlays holding a credential.
- NewRelay seat states report from one source, scoped to evidence they can justify, and spinners stopped guessing.
- NewAn expired override chip is inert and says why on screen.
- FixTwelve security advisories closed across the desktop and web dependency trees.
- FixA Tester FAIL with a reason no longer resolves to Pass, an unrecognised verdict token is stripped instead of leaking into chat, and ordinary Tester turns no longer manufacture phase verdicts.
- FixA refused card command no longer grants session-long consent, and a forwarded queue drain no longer counts as your consent.
- FixA prompt nobody received no longer parks the run forever, and an escalation decision settles the prompt it was made about.
- FixAn empty lane no longer gates its dependents forever, and an ancestor lane with nothing to land now stamps as merged.
- FixThe conflict resolver is pinned to its own lane instead of running on the main tree and merging nothing.
- FixStart the board starts the board, and the Run button starts the run instead of asking the planner.
- FixThe Course header stops contradicting itself, the board strip stops treating silence as evidence of work, and a parked ask no longer renders the claim it contradicts.
- FixThe recovery dialog shows it is working, fits, and says what it does.
- FixCastforge stops refetching 345 KB and reminting an install identity every turn.
Every ask lands.
Every message you send your team now produces a visible, truthful outcome. It either runs now or takes a stated place in the queue, and the board no longer drifts away from what is actually happening.
- NewThe board follows your plan file. Castforge reads .castforge/plan.md back onto the board, so a phase or card your team wrote there shows up instead of living only in a file. When the two disagree, a banner in chat and a section in the health panel tell you which way they diverge.
- NewAsk for the same thing twice and it does not get planned twice. The repeat is parked and you get a card offering two real choices: move it to the front, or leave it where it is. Ask a third time and the card says so and recommends moving it up.
- NewA planned ask tells you where it landed. Instead of vanishing into the queue it names the phase it joined and its place in the order.
- NewBug reports and feature requests are told apart. Something reported as broken is routed to the work that owns it, a new request takes a place in the queue, and either way the placement is shown rather than left to guesswork.
- NewYou can move a phase in the queue. Right-click a phase header for Move to front of queue, Move earlier, or Move later. If a move is not legal because the phase depends on work ahead of it, Castforge names that work and refuses instead of quietly reordering.
- NewA phase you moved carries a MOVED marker on the board, so a reordered queue is visibly reordered.
- NewAdjacent phases with no milestone of their own group into a single run on the board, rather than each standing alone.
- NewA run cannot continue behind a window you cannot reach. If the interface stops responding, the run pauses instead of carrying on invisibly, the chat banner says why, and Resume is always there once the window is back.
- NewLong-running tools are visible and stoppable. A tool call that goes quiet for too long gets a badge on its card and one explicit Stop, rather than a card that just looks busy.
- NewA resume that finds nothing to run says so, instead of going quiet and leaving you to guess whether it started.
- NewVerification results can no longer be lost. A verdict that arrives with nowhere to go is held and shown on the board with an amber marker, and you can re-run the check or dismiss it.
- NewCastforge notices when a commit carried less than the turn actually touched, so partly landed work is flagged instead of passing as finished.
- NewWork that might not have landed is summarised rather than dumped in full, so the warning is short enough to actually read.
- NewThe Relay is now a fixed-height docked rail. It no longer grows and pushes the rest of the screen around, and collapsed it shows a live summary with one tinted dot per running lane, so nothing loses its identity.
- NewSeat labels tell the truth. An idle Researcher or Tester reads as correct for the job rather than looking stuck.
- NewA broad first request that gets scoped down says so, instead of quietly building less than you asked for.
- FixRead-only roles stay read-only. A reviewer or researcher can no longer reach past its authority through a connected outside tool; unknown requests are refused rather than allowed.
- FixCodex leads get their instructions again. Charter delivery to Codex was broken, which quietly degraded a Codex lead into writing plain prose plans instead of real boards. It now uses a channel Codex still supports.
- FixOne-shot Codex turns run properly, using a command shape Codex accepts rather than one it silently rejected.
- FixRequest routing no longer times out on ordinary asks. The time limit was set below what a normal request needs, so routing was rejecting the common case instead of trimming a rare slow one.
- FixA resume no longer replays a nudge for work that has already been done.
- FixAsk Lead to re-plan settles before it composes, so the new plan reflects the finished board instead of racing it.
- FixA failed agent sign-in shows an error on the row instead of doing nothing.
- FixA drag that gets refused states its reason rather than snapping back silently.
- FixThe composer draft clears on every send path, so a message you already sent stops reappearing in the box.
- FixThe Recommended badge is legible on the filled button it sits on.
When work cannot land, you find out why.
Castforge's ordered integration, the step that merges finished work into your project, had two failure paths that each detected a real problem, logged it, and then retried forever with no explanation. Both are now bounded, diagnosed and reported.
- FixWhen Castforge cannot merge finished work into your project, it now tells you why instead of quietly retrying for the rest of the run. Two cases were previously invisible: your project folder having uncommitted changes, and a lane's work not reaching your project after a merge.
- FixA repeated failure to land work is now bounded. After the second consecutive attempt Castforge stops retrying and reports the reason, instead of looping in the background with nothing on screen to explain the stall.
- NewThe reason names what it found. For an uncommitted project folder it counts your own entries and keeps them separate from Castforge's own files, so the number you see is the number you have to deal with.
- NewSix distinct conditions are told apart, each with its own suggested next step, instead of one generic stall. A run that genuinely cannot diagnose itself says so and asks you, rather than guessing.
- FixCastforge still never commits, stashes, cleans or discards your uncommitted work. When your project folder has uncommitted changes it refuses to merge and explains why, and integration resumes on its own as soon as the folder is clean.
- NewA card whose work could not land leaves the merge queue but stays Done and shows the reason on the board. Use Run Now or Retry to reopen it and try again.
- FixThis release changes how finished work gets merged into your project. The first occurrence of either condition behaves exactly as it did in beta.2, so a normal run looks unchanged; the new reporting only appears when something fails to land twice in a row.
Runs that get themselves unstuck.
A batch of fixes for runs that used to stop with no explanation, plus honest instrumentation: when something does go wrong, the app can now name the process responsible instead of guessing.
- FixA run no longer stalls when a drain consumes its handoffs but starts nothing new. Previously the board could sit still with no card in flight and no explanation.
- FixA run paused on a verdict with no card attached is reachable again after a restart, instead of being stuck for good.
- FixCards left in Doing by an unclean shutdown return to Up Next when you reopen the project, so a crash no longer leaves the board claiming work is in progress that nothing is working on.
- FixA retried card is recorded on the turn the retry actually dispatches, so the board no longer shows it twice.
- FixA frozen window now escalates through a real recovery path instead of waiting on the stuck view, and it can reach the recovery dialog even while a permission prompt is waiting for you.
- FixCastforge's own project folder no longer makes every worktree read as modified, which was quietly blocking parallel lanes from merging.
- FixRole colors render correctly in the preview pane conversation.
- NewMemory diagnostics now measure the whole Castforge process tree and the host machine, not just the browser view. A sample names which process is growing and reports system memory and swap, so a slowdown can be traced to its real source.
- NewThe planning ledger is bounded by count rather than only by age. A burst of repeated diagnostic events can no longer grow your local database without limit, and space already taken by one is reclaimed automatically.
Autonomous now means autonomous.
Autonomous mode stopped asking, on purpose. Read the first item before you run it, and check what your projects are set to.
- NewAutonomous mode now runs with zero confirmations. Not fewer prompts, none. That includes reading credentials, deploying to production, running schema migrations, publishing, and spending money. If you leave a project on Autonomous and walk away, an agent can do all of that unattended. Careful and Balanced are unchanged and still confirm.
- NewEvery suppressed check still runs and still writes an audit line to the session log with the resolved path, so you can always answer "what did that run touch?" after the fact.
- FixBalanced was not actually confirming. A project set to Balanced could silently auto-approve the same confirmations, including production deploys, schema migrations, publishing and spend, because the app read your global default instead of the project's own level whenever the project settings had not finished loading. A project whose settings have not loaded now fails safe to Careful.
- FixDesigner, Tester and Reviewer could not run. On any board with a card assigned to one of them, that card could never start and the role showed Blocked. On one test board, 7 of 17 cards were affected.
- FixA new project's first message reaches the Lead and gets a plan, instead of going straight to a single Coder turn. A plan with milestones no longer silently vanishes on projects that already have work on the board.
- FixThe card menu's "Recover held verification" works. It never has before.
- FixWeb searches and documentation lookups are no longer logged as if they were attempts to escape your project folder.
A permission hole, closed.
In autonomous mode the app was approving every permission prompt for you as soon as a project was open, including the ones that are supposed to ask no matter what.
- FixProduction deploys, database migrations, publishing, and anything that spends money are all meant to stop and wait for an explicit answer. They now do. If you ran anything autonomously on the previous build with a project open, it is worth a look at what it did.
- FixSteps that finish without a result no longer get recorded as having passed, and a card a reviewer blocked can no longer be marked complete later by a background pass. Previously a blocked card could quietly flip to done once an unrelated prerequisite landed.
- FixThe engine keeps a durable record when a gate ends unresolved. Those records were being silently rejected and lost, so a run that stalled left nothing behind to look at afterwards.
- FixRound notices no longer claim a step hit its change-request limit when it actually ended early without approval.
- NewReleases now run the full desktop test suite before an installer is built. The previous release was cut without it, which is how the permission hole above reached you.
Gates that tell the truth.
A stability release. It closes ten related defects in the orchestration engine, all of the same shape: when a quality gate could not reach a conclusion, the engine either recorded it as a pass or waited forever instead of saying so.
- FixA run no longer hangs when an agent asks you a question and the project view is closed. Previously the question had nowhere to go and the run could sit blocked indefinitely with nothing in the log.
- FixA review that does not finish is no longer recorded as an approval. A turn that is interrupted, killed, or ends without its verdict now books no verdict at all. The same fix applies to the design check, the revision loop and the automated testing loop.
- FixA role is no longer sent to work on a card whose prerequisites have not been built. This is what caused the Designer to be asked to restyle screens that did not exist yet, block correctly three times, and have the result accepted anyway.
- FixA role that blocks on a card can no longer mark that same card complete.
- FixA stalled agent turn with no active card is now detected and reported. It was previously invisible to the stall watchdog.
- FixBackground git processes are bounded and cleaned up in all cases. A leak in the per-turn snapshot path could accumulate processes over a long session and make the app progressively less responsive, including the Health and Memory tabs.
Ask a question, get an answer.
Castforge now reads every message for intent and handles it at the right depth, so a question is answered instead of turning into an unrequested work session. Type during a run and your message waits for a safe moment instead of getting lost.
- NewAdaptive intent routing. A question gets an answer, a one line fix gets done on the spot, and a big request gets a plan and the whole team. Castforge announces the choice in the conversation in one short line, so you always know what is about to happen, and you can override it by saying "plan it instead" or "just do it".
- NewType while the team is running. Your message is queued instead of lost, appears in a stack under the composer, and is delivered at the next safe stopping point. You pick what happens with it: steer the card in flight, add it to this milestone, run it now, save it for later, or remove it.
- NewQueued messages survive a restart, so closing the app mid run no longer loses what you typed.
- NewIf a queued message would rearchitect work already in flight, the run holds and asks first, with two clear choices: Run it, or Drop it.
- NewEvery phase writes its plan, summary and verification into a phases folder inside your project, so you can read what the team decided without scrolling back through the conversation.
- NewBug investigations keep their own notes file on disk, with the findings appended when the investigation wraps.
- NewA proposed memory update now says what it proposes and shows a real line by line diff, and the Memory tab counts how many proposals are waiting.
- FixThe team no longer keeps working after answering you. A short question is answered and the run stops there instead of rolling straight into a long work session you did not ask for.
- FixStopping a run no longer discards the messages you typed during it.
- FixThe Team roster shows the model you pinned for a seat instead of falling back to "Default".
- FixProgress and liveness are reported for every agent, not just Claude, so a stalled run is spotted the same way whichever agent you use.
Watch parallel work as it happens.
Parallel lanes stop feeling invisible: you can browse work in progress, dependent tasks wait their turn, and one conflict no longer stalls the rest.
- NewThe Files panel shows an In Flight section for every active parallel lane, so you can browse work in progress read-only before it lands. Preview explains when work is still in agent lanes instead of showing an empty project.
- FixA task that depends on unmerged work now waits for that work to land on your branch instead of starting from an empty checkout and blocking. Repeat turns on the same task reuse the same lane, so nothing is built twice.
- FixA merge conflict in one parallel lane no longer holds up the rest. The conflicted lane parks with the conflicting files listed, sibling lanes keep landing, and the parked lane retries automatically as your branch moves.
- PerfFixed a freeze where the app could stop responding during long runs because the course board refreshed in a tight loop.
Your work always lands.
A deep audit of a real beta project turned into six fixes for how the team runs, merges, and commits.
- FixParallel lanes now merge into your main branch at every stopping point of a run, not only mid-run. Finished, approved work from earlier runs that never landed is detected and merged automatically, and merges always target your real main branch.
- FixA blocked task parks visibly with its reason instead of being retried over and over. The Lead is asked to resequence, and the task returns to the queue by itself once its dependency is done.
- FixTask plans carry explicit ordering for design work, so a restyle task can no longer run before the screen it styles has been built.
- NewProjects commit with the identity of your connected GitHub account instead of whatever global git identity happens to be on your machine. An identity you set yourself is never overwritten.
- FixAgents stay inside their own workspace: coders and testers no longer wander into other lanes or shared checkouts, and testers clean up after themselves.
- NewOn the Connections page, an agent whose command line tool is missing shows a "setup needed" badge and a Set up hint right on the row, so the installer is one click away.
Same-day beta fixes.
Three fixes straight from beta tester reports, shipped the same day they came in.
- FixSessions heal themselves: if your sign-in token expires, Castforge refreshes it automatically and retries. If it truly cannot, you are signed out with a clear "sign in again" message instead of a misleading "could not reach cloud" error.
- FixPublishing to GitHub handles name collisions: an empty same-named repository is reused, a busy one gets the next free name (name-2, name-3), and the confirmation names exactly which repository was used.
- FixThe Cursor connection card now explains that Castforge uses Cursor's cursor-agent command line tool, so "not installed" no longer reads as a bug when only the Cursor editor is present.
Models that always work.
Model selection now follows one rule: your agent CLIs own their defaults, and Castforge never forces a model your account cannot run.
- NewSmart is now the default model strategy for new projects: cheaper models take the routine work and stronger models take the hard parts, without you touching a setting.
- NewIf your account cannot use a selected model, Castforge falls back to your account default, retries the run automatically, and tells you what happened. No more dead cards from a plan or model mismatch.
- FixAgents no longer receive a stored default model they cannot run. Unless you explicitly pick a model, each agent CLI uses its own account default, so Codex, Gemini, and Cursor work out of the box on every account type.
- FixClaude model tiers now use rolling aliases (Opus, Sonnet, Haiku), so your team always runs the newest version of each model instead of a pinned release that can go stale.
- FixPublishing a new project to GitHub now always signs the push with your connected GitHub account. Previously another credential manager on your machine could take over the push and fail with "repository not found".
Board Milestones.
Your course board now stacks work into vertical milestone sections. The active milestone stays expanded while finished ones collapse to a one-line summary, so a long project reads as a clean sequence of shipped chunks instead of one endless list.
- NewEvery project gets a named default milestone through a safe backfill, so nothing you already planned is lost. When the team takes on distinct new work, the Lead proposes a milestone title you confirm before it is minted.
- NewQueue and drag-reorder pending milestones to set what ships next. The run pauses at each milestone boundary so you can review before rolling on, and a Settings > Behavior "Continue past milestone boundaries" toggle lets you roll straight through when you want a hands-off run.
- NewAgents can create, reorder, and archive milestones as the plan evolves. A Run-now one-off interjection pauses the active card, runs your quick request, and auto-resumes the card where it left off.
- NewSign in with your Cursor subscription: a browser sign-in flow, with an API key optional.
- NewOne-click Claude Code install straight from its connection card (needs Node.js installed).
- NewIn autonomous mode, consequential Lead questions now park and wait for you instead of being auto-answered.
- FixConnections status pills update immediately when you save a key, the installer upgrades in place, stopping a run fully releases the project, and permission approvals collapse into a single line in chat.
- FixBoard-integrity fixes: follow-ups can no longer wipe, double, or re-plan a board, and completed work is never erased.
- NewWhere we are now: parallel lanes each run in an isolated git worktree and merge in order behind a review gate, with the full Lead / Researcher / Coder / Tester / Reviewer / Designer pipeline and a Reviewer on every card. Durable Memory and a Project State digest carry context across sessions, Time Machine snapshots let you scrub and branch, a live in-app preview shows your app as it builds, and quality tiers plus model strategy route work across about 17 agents on your own subscription or your own API key.
- SoonNot yet: Publish and Deploy to Vercel and Supabase are still simulated, Castforge is Windows-only for now, and the Team plan is on the waitlist.
Continue means continue.
Two fixes for boards that could lose work to an ordinary instruction.
- FixSaying "continue" resumes the card already in progress instead of re-planning the board from scratch. Previously a single word could throw away a board you had been building on and replace it with a fresh plan.
- FixA full board regeneration is refused once a board is established, so an ordinary request can no longer wipe work already laid out.
Honest labels on what is not built yet.
If a feature is not built, the app should say so rather than let you find out by clicking it.
- NewTemplates are now labelled coming soon wherever they appear, instead of looking like a feature you could use today.
- NewThe website leads with parallel lanes and carries a ten row comparison against the tools people ask us about.
The front door opens.
The open beta got its front door: no invite, no waitlist, one step from the homepage to signed in.
- NewSigning up is now one step. The old waitlist page is a get started page, and every call to action across the site takes you straight to sign in rather than asking you to wait for an invite.
- FixSub-agents are swept live-to-finished when their lane ends, so the roster no longer shows helpers still working on a lane that already closed.
Open beta and parallel lanes.
Castforge is now open to everyone, free during early access. The invite allowlist is gone, so you can sign in and start building right away.
- NewParallel multi-lane orchestration: run several cards at once, each in its own isolated git worktree, then merged in order behind a review gate so lanes never trample each other.
- NewA full cool-dark workspace redesign across Home, the board, chat, Settings, Memory, and Health, with a relay chat spine between the transcript and the composer.
- NewA Time Machine snapshot scrubber in the Preview drawer and terminal keep-alive, so terminals persist and chat stays reachable while a run works.