Claude Code 推出新版「Projects」功能:一个对话当主管,自动拆出多个云端线程并行干活,关了电脑也不停
每个线程都是一个独立的云端 Claude Code 会话,在自己的分支上干活;项目对话里的 Claude 负责分派和跟踪,谁卡住了就排进「等你处理」。目前是 Pro、Max 的公开 beta,分批推送。
在 Claude 旧版的 Projects(claude.ai 聊天与 Cowork 里的项目)中,项目只是把对话和参考文件归拢在一起,既没有线程,也没有协调者。想同时跑几个 Claude Code 会话,协调工作都得你自己做:决定每个会话做什么,在每个会话开头重复交代同样的背景,再挨个回去看哪个做完了、哪个在等你回答。碰上一项要做好几天、跨好几个代码仓库的活,你就是那个调度员。
Anthropic 在 Claude Code 的网页版(claude.ai/code)与桌面端上线了全新设计的项目(Projects)功能,目前处于面向 Pro 与 Max 订阅用户的公开 beta 阶段。这次改造的核心转变是从「静态资料夹」变成「带班主管」:整个项目收拢为一个持续运行的中央对话,你在对话里提出目标,由 Claude 担任协调者,自动将需求拆解成多个并行运行的线程(thread)。
这里的线程不是简单的后台命令,每一个线程本质上都是一个独立的云端 Claude Code 会话。它们各自拥有专属的上下文窗口,在云端独立的沙箱和 git 分支上并行编写代码、跑测试、在需要时开 PR,并且在电脑合盖离线后继续运转。
Projects 的主要能力:
- 一个对话派活:任务、bug、补充说明都丢进同一个项目对话,Claude 决定是就地回答、开新线程,还是转给正在做这块的线程。
- 多个线程并行,关了电脑也不停:每个线程是一个独立的云端 Claude Code 会话,有自己的上下文窗口、代码副本和分支。
- 需要你时才叫你:Overview(总览)面板按状态给线程分组,卡住等你拍板的排进 Waiting on you(等你处理),桌面端还会弹通知。
- 共享背景和记忆:每个新线程都带着同一份项目指令、仓库和项目记忆开工,你让 Claude 记住的决定,后面的线程都知道。
- 自己跟进 PR:线程开了 PR 就一直盯着,CI 挂了或来了评审意见会自己推修复,检查通过再告诉你。
- 能定时跑:可以让 Claude 把一部分工作做成例行任务(routine),按计划在项目里自动运行。
- 不止写代码:没有代码仓库也能用,上传文档让线程调研、写报告,成果交到 Library(资料库)。
运行机制:一条复合消息如何变成多个并行线程?
官方发布视频演示了这样一个上午:用户在一个名为 checkout-service 的服务项目里,一次性输入了一条包含三项诉求的复合指令——/checkout 接口的 p99 延迟在 4812 号部署后翻了一倍,查出原因并修复、起草周五的发布说明,顺便把 stripe-node(Stripe 的 Node.js SDK)升级到 v15。
在项目里,主对话里的 Claude 担任协调者,看到的是线程汇报回来的结果,而不是它们走的每一步。Claude 会自主决定消息的去向:快速简单的问题通常直接在对话中就地回答;新工作会开出新线程,或者交由已经在该领域工作的线程继续做,Claude 也会明确告诉你转交给了谁;一条消息里如果包含几件互不相干的事,则会拆成多个独立线程。如果它的分派不符合你的预期,直接告诉它调整即可。
在演示中,Claude 识别出这是三项独立工作,随即在界面上生成三张线程卡片并行派发:第一项任务在还剩 7 个提交的范围里二分查找出问题的提交;第二项任务检索 v4.11 以来已合并的 23 个 PR 开始归纳改动点;第三项任务更新 6 个文件里的 SDK 调用。此时右侧的总览(Overview)面板显示 3 个线程处于 Working(进行中)状态。
在线程各自推进期间,如果你临时产生新想法,不需要重新梳理全局。例如用户半小时后在主对话随口补充了一句「发布改到周一了,发布说明里要写对」,协调者会自动识别这条信息归属于哪项工作,直接将其转交给撰写发布说明的线程。该线程在自己的独立会话里接收到转交的消息,就地把发布日期改成周一(9 月 22 日),并把代码冻结的提醒挪到周五,完全不干扰另外两个正在排查代码的线程。
任务完成后的交付形式也各司其职。排查性能问题的线程最终定位出原因是 QuoteService 里的 N+1 查询,自动改回批量查询,在 GitHub 上推了新分支并开出 PR #4821,主对话随即收到「PR #4821 已开、CI 通过」的完工汇报。
当线程遇到无法擅自决定的技术断点时,会自动停下等待人工输入。升级 stripe-node 的线程在更新完 6 个文件后运行契约测试,42 项测试通过了 41 项,最后一项因下游 webhook-lambda 仍跑在 Node 18 上而失败(stripe-node v15 不再支持 Node 18)。该线程并没有胡乱猜测或绕过测试,而是将状态置为 Waiting on you(等你处理),向用户提供升级 Lambda 运行时至 Node 20(推荐选项)或锁定 stripe-node v14 的权衡建议。
需要说明的是,线程在模型支持时默认运行在 auto mode,绝大多数工具调用不需要向你确认。当某个线程确实需要你的批准时,提示只会出现在该线程内部,线程会一直等到你在该线程里作答;如果你在项目对话里告诉 Claude 继续,指令是传不到线程内部的。在线程专属的输入框里发消息会直达该线程,而在项目对话里发跟进消息,只有当 Claude 将其匹配给该线程时才会转交。在官方演示中,用户也是直接点开 stripe-node 线程,在其内部输入框中回复决策的。
在项目对话右侧的总览(Overview)面板中,线程的状态会按六个分组清晰归类:
- Ready for review(待审):PR 已开、等待评审的线程;
- Waiting on you(等你处理):等待你的回复或批准,或是执行失败的线程;
- Working(进行中):仍在运行中的线程;
- Landing(即将合并):PR 已获批准或已排队等待合并的线程;
- Idle(空闲):已执行完毕且不等待任何事项的空闲线程;
- Resolved(已了结):标记为已了结的线程(由你手动标记、在你走完合并 PR 等最后一步后由 Claude 标记,或在一周没有活动后自动标记)。
如果你使用的是桌面端,当线程报错、需要你输入或 Claude 在项目对话中发言时,系统会弹出桌面通知,无需时刻盯住界面;而在网页浏览器中,则可以通过 Overview 按钮上的提示圆点来获知有线程在等你。
回到开头那个上午,四个线程在这几组之间是这样移动的:
据官方发布视频逐帧整理 · 时刻为画面显示的时间
一个上午:三件事怎么分出去,又在哪一刻轮到你
项目 checkout-service。每个时刻左边是对话里发生的事,右边是同一时刻 Overview(总览)里四个线程各在哪一组;这一刻有变化的线程标了「变化」。
-
你 · 项目对话
「/checkout 的 p99 延迟在 4812 号部署后翻倍了,查出来修掉。另外起草周五的发布说明,再把 stripe-node 升到 v15。」
Claude · 项目对话
拆成三个线程同时开工:「有需要你的我会标出来。」
- Working 进行中修 p99 退化二分查找出问题的提交,还剩 7 个
- Working 进行中起草发布说明读 v4.11 以来合并的 23 个 PR
- Working 进行中stripe-node 升到 v15改 6 个文件里的 SDK 调用
- Idle 空闲pg 驱动升到 8.13早先的任务,PR #4790 已合并
-
你 · 项目对话
「对了,发布改到周一了,说明里要写对。」
Claude · 项目对话
只转给「起草发布说明」这一个线程,由它改日期、在线程里确认;另外两个线程不受打扰。
- Working 进行中修 p99 退化找到出问题的提交 a3f9c12:QuoteService 里的 N+1 查询
- Working 进行中起草发布说明收到转来的消息:发布日改为 9 月 22 日周一,代码冻结提醒挪到周五
- Working 进行中stripe-node 升到 v15
- Idle 空闲pg 驱动升到 8.13
-
Claude · 项目对话
p99 线程做完了:原因是 QuoteService 里的 N+1 查询,已改回批量查询,PR #4821 已开,CI 通过。
stripe-node 线程要你拍板才能往下走:v15 不再支持 Node 18,而 webhook Lambda 还跑在 Node 18 上,42 个契约测试卡在最后 1 个。
- Resolved 已了结修 p99 退化PR #4821 已开 · CI 通过
- Working 进行中起草发布说明
- Waiting on you 等你处理stripe-node 升到 v15卡住:Lambda 还在 Node 18
- Idle 空闲pg 驱动升到 8.13
-
你 · stripe-node 线程自己的输入框
选「把 Lambda 升到 Node 20」。
线程给过两个选项:升级 Lambda,改 infra/webhook-lambda.tf 里的一行、重新部署、重跑测试(它推荐这个);或者停在 stripe-node v14,不动基础设施,但落后一个大版本。
- Resolved 已了结修 p99 退化
- Working 进行中起草发布说明草稿写好,准备发出去审
- Working 进行中stripe-node 升到 v15把 webhook Lambda 迁到 Node 20,重跑契约测试
- Idle 空闲pg 驱动升到 8.13
-
Claude · 项目对话
周一的发布说明写好了:23 处改动,两处破坏性改动放在最前面。
视频到这里结束,没有展示此刻的 Overview。
Projects 与 Claude Tag 有什么关系
Projects 与 Slack 里的 Claude Tag 采用了相似的分层:上层会话负责接收任务和协调,独立线程负责执行,多个任务通过共享记忆衔接起来。
- 接活与干活分层:在 Claude Tag 中,每个 Slack 频道有自己的会话处理顶层消息;遇到需要调查、调用工具或长对话的任务,它会在消息下的 Slack 线程里启动专门的工作会话(dedicated session)。在 Claude Code 项目中,同样是由项目对话里的 Claude 担任协调者负责接活,真正干活的是它开出的各个线程。
- 独立沙箱与生命周期:Claude Tag 中每个线程运行在独立的临时云端沙箱中,同频道的两个线程是两个独立会话,不直接共享状态,沙箱在线程安静下来后释放、有新回复时再重建;项目中的每个线程同样是独立的云端会话,在各自的 Git 分支上工作,沙箱在两轮交互之间暂停,继续时再恢复。
- 跨任务记忆:Claude Tag 在公开频道中学到的经验会存成工作区共享记忆,私密频道单独保存;项目中各个线程也共享同一份项目记忆。
- 定时与跟进机制:Claude Tag 支持按计划运行任务、跟随 PR 并在其变动时采取行动;项目中同样支持例行任务(routine),且线程在开出 PR 后会自动盯住状态并跟进修复。
两者的主要区别不是架构,而是使用者和工作环境:Claude Tag 面向 Slack 团队,Projects 面向一个人的长期工作。
| 比较维度 | Claude Tag | 项目(Projects) |
|---|---|---|
| 在哪用 | Slack 频道 | claude.ai/code、桌面端、手机 App |
| 谁能派活、谁能看到 | 频道里任何人都能派活、都能看到和引导 | 只有你自己 |
| 接活的那一层 | 频道自己的会话 | 项目对话里的 Claude(协调者) |
| 干活的那一层 | Slack 线程里的工作会话(各有独立沙箱) | 线程(各是一个云端会话、各在自己的分支上) |
| 用谁的权限 | 管理员为频道配置的服务账号 | 你自己的 GitHub 权限与个人连接器(connectors) |
| 记忆范围 | 公开频道共享给整个工作区,私密频道单独存 | 这一个项目的记忆 |
| 定时与跟进 | 例行任务、跟随 PR 并在其变化时行动 | 例行任务、线程盯住 PR 自动修复 |
| 适用方案 | Team、Enterprise 方案 | Pro、Max 方案(Team 与 Enterprise 暂不可用) |
Claude Tag 面向团队,常驻在 Slack 频道里,频道成员可以派活或中途引导,用的是管理员统一配置的服务账号。
而 Claude Code 的新版项目目前完全是个人专享的:只有你能向它发送任务或查看它的线程;线程使用的是你个人的 GitHub 推送权限和 claude.ai 绑定的连接器,线程记录也没有分享选项。
项目记忆由对话和线程共同维护
项目记忆(project memory)不是协调者独占写入的。你可以在项目对话或任何线程里让 Claude 记住需求、决策和踩坑点;纠正一个线程后,也可以把这次纠正写进记忆,让后续线程沿用。Claude 还会保存汇报频率、并发偏好等协调习惯。
项目记忆沉淀的是长期的业务背景与决策,例如发布改到了周五、为什么砍掉导出功能、动计费服务前要先找谁。
关于项目记忆,还有三点要知道:
- 可随时查看与维护:记忆文件存放在 Project settings > Memory 中,列在 Auto memory 下,你可以随时查看、编辑或删除其中的文件;
- 与本地记忆及仓库规则独立:它和你本机 Claude Code 的自动记忆(auto memory)是两套独立的存储,也和仓库里的
CLAUDE.md分开。仓库特有的编码规范应写在CLAUDE.md中,而关于该项目的业务背景和决策记录则写入项目记忆; - 关键信息必须写入记忆:项目对话为了长久运行,并不读取完整的历史对话,而只基于最近的消息、最近的线程以及项目记忆来工作。所以任何绝对不能丢的信息,都要放进项目记忆。
官方博客的演示动画展示了一个名为 Launch readiness 的项目从周一到周四的演进过程:发布日期最初依据 timeline.csv 定为 10 月 14 日,后来两次推迟到 21 日和 28 日,每次改动都同步更新并沉淀在记忆中;当用户提出「Add pricing to it」这类补充要求时,协调者会自动将其接到已有的 Partner email 线程上;这几天下来,产出的结果(Results)和定下的决定(Decisions)在对话下方一层层累积。
线程是完整的云端会话
Projects 里的线程与 Claude Code 的 subagents(子 Agent)不是同一种东西。子 Agent 是单个会话内部的委托工作者,完成旁支任务后向主会话返回摘要。
而在项目中派生出的线程,每一个都是全功能的独立云端会话(cloud session)。每个线程有自己的代码副本和自己的上下文窗口。在需要应对大型任务时,每个线程自身还能根据需要在其内部调用子 Agent、循环执行器(loops)和工作流(workflows)来拆分工序,从而让大型工作更快完成。
它会在哪些情况下主动行动
Projects 的主动行动主要出现在三种场景:
- 首个项目的初始化探索:你的第一个项目建好后,只要你没抢先发消息,Claude 会自己先走一轮:项目里有它能读的仓库时,可能开一个只读不改的探索线程,看完提出下一步建议;也可能根据你最近的云端会话贴出设置建议(Setup recommendations),列出建议添加的仓库、建议创建的例行任务和它可以开的线程。这一轮同样消耗你的套餐额度。
- 例行任务(Routines):你可以让 Claude 把一部分工作放到计划里做成例行任务(routine),它以线程的形式在这个项目里运行,出现在 Routines 标签页;而在项目外单独创建的例行任务照常各自运行。
- 分支监听与自我修复:只要线程开了 PR,不管你其他云端会话有没有开 auto-fix(自动修复),它都会主动盯住该 PR。一旦 CI 构建变红或仓库收到了评审修改意见,线程就会主动唤醒并推送修复提交,直到检查通过且 PR 准备好供你评审时再向你汇报。
实际使用时,还要提前配置并发、权限和额度规则:
- 并发线程没有固定上限:系统会根据任务需要启动相应数量的线程。你在对话里吩咐「最多同时跑两个」只是协调偏好,并不是系统的硬性上限;如果想让并发限制措辞精确且从一开始对所有线程生效,需要写进项目指令。唯一的硬性数量限制是:所有项目加起来每天最多新开 200 个线程。
- 批准规则写在仓库里:前面说过,需要你批准的提示只在线程内部出现。若想让所有线程对某些命令免问、或者一律禁止某些命令,要写进仓库
.claude/settings.json的权限规则,而且只在单仓库项目里生效。 - 额度超限会自动重试并消耗后续窗口:当线程或项目对话撞上五小时或每周的用量上限时,系统会持续自动重试,一旦额度恢复就接着继续干,这会在你不发话的情况下直接用掉你下一个周期的额度窗口。如果你不希望它自动消耗新窗口,需要在线程里点击 Stop,或者直接暂停(Pause)整个项目。(例行任务启动的线程例外,碰到额度限制会直接报错停止,不会等待重试。)
横向对比:Claude Code 里的五种并行模式该怎么选?
一周前 Cursor 也推出了同名的 Projects,同样是一个协调者在云端规划、分派多个 Agent 干活。回到 Claude Code 自己,目前一共有五种让多项任务同时跑的方式。
很多开发者容易被这些概念弄混。它们的核心区别在于两点:谁来做任务调度,以及代码跑在本地还是云端:
| 并行方式 | 谁来调度 | 在哪运行 | 适用场景与边界 |
|---|---|---|---|
| 子 Agent(Subagents) | 在发起它的那个会话内部由 Claude 委托派发并回收摘要 | 在发起它的那个会话里 | 临时处理旁支任务(如检索结果、日志或文件内容),避免主会话上下文被不会再引用的信息填满。 |
| Agent 视图(Agent view) | 由人派发并监控后台会话,用 claude agents 打开,研究预览(research preview) |
开发者本地机器(派出的会话在修改文件前会移入自己的独立 worktree) | 手头有几个互不相干的独立任务,希望交出去后一览各会话状态,只在需要时介入干预。 |
| Agent 团队(Agent teams) | 一个领头会话(lead)管理,队友会话共享任务列表、互相直接发消息 | 在你的电脑上或一个云端会话内部运行(实验性功能,默认关闭) | 为单项任务拉起若干队友会话协作,任务结束就结束;由 Claude 拆解任务、分派并让成员保持同步。 |
| 动态工作流(Dynamic workflows) | 一个脚本调度许多子 Agent 并交叉核对结果,计划握在脚本里,而不是靠 Claude 一轮轮临场判断 | 文档没有单独说明 | 任务规模超出少量子 Agent 所能承受,或需要互相核对结论:例如全代码库审计、500 个文件的迁移、交叉核对的研究,或多角度起草方案。 |
| 项目(Projects) | 项目对话里的 Claude 担任长期协调者,自动开出并跟踪干活的线程 | 全托管的云端沙箱环境(各线程在独立分支上运行) | 跨越数天或数周的长周期目标;电脑关机后依然在云端推进并按需开 PR,交代一次背景即可持续运转。 |
需要提醒的是,同时运行多个会话或子 Agent,token 用量会成倍增加。
Claude Code 的跨会话消息能让你自己开的几个会话互相传递发现和状态,但开哪些会话、谁做什么、什么时候收尾,依然需要你自己来安排;而新版项目的改变,在于把「开会话、分派任务、跟踪进展」这些繁复的调度工作,完全交给了项目对话里的 Claude。
项目适合的是目标比单个会话更长、会不断冒出新任务的长线工作:例如一个目标跨多个仓库、一个持续往里丢 bug 的服务、一次比单个会话更大的开发或迁移,或是不写代码的纯文档工作(直接上传文件代替仓库,线程会把整理出的成果交到 Library(资料库)标签页)。而在以下四种情况下,用其他方式更为合适:
- 一个会话就能做完的单个任务(例如修一个不稳定的登录测试):自己开一个云端会话即可;
- 需要只有你电脑能访问的工具或服务(例如本地数据库、设备模拟器、VPN 后面的接口):用本地会话,或用 Agent 视图(agent view)同时跑几个;如果工作只需要本地文件,直接上传到项目即可;
- 按固定时间重复、不需要来回对话的任务(例如每周一发一份依赖报告):单独建一个例行任务(routine);
- 几个人在 Slack 频道里一起给 Claude 派活、一起引导:使用 Claude Tag。
用量:默认全用 Opus,比单个会话耗得快
新项目在默认配置下,项目对话和所有线程都默认使用 Opus 模型,其中线程默认开启高思考强度(High effort),而协调对话开启低思考强度。
项目消耗的是与你其他 Claude Code 会话相同的套餐配额,但用量会跑得更快:每个运行中的线程都是一个完整会话,几个同时跑就会同时消耗配额;项目对话自身阅读线程汇报、决定下一步也要消耗 token;此外,那些处于空闲状态但正在盯 PR 的线程,一旦遇到 CI 失败或新的评审意见就会被唤醒,再次消耗额度。因此,Pro 订阅用户在运行项目的日子里,要预期会更早碰到套餐上限。不过,若项目中没有正在运行的线程、没有被盯的 PR 且没有新消息,项目闲置时并不消耗额度,归档的项目也不会产生消耗。
想要控制并降低项目的用量,可以采取以下做法:
- 在 Project settings > Usage 中查看按线程、按模型拆分的 token 用量,以及项目对话自身的消耗;
- 如果把跟进消息发给一个闲置时间已超过缓存有效期(Pro 与 Max 套餐额度内为 1 小时)的旧线程,它在处理前会先把整段对话重读一遍;因此对于新工作,让 Claude 开一个全新线程往往比唤醒体积庞大的旧线程更省 token;
- 可以在通用设置(General)中,为线程或项目对话换用小模型,或者调低思考强度(effort);
- 让 Claude 在项目对话中少开几个线程,或者对小问题直接就地回答,不要动辄新起线程。
开工前要配好的三件事
把一条长线工作交给项目之前,GitHub 权限、线程能用的工具、多仓库时的规则,这三处最容易卡住。
GitHub:必须装 Claude GitHub App
在终端运行 Claude Code 时,开发者常通过 /web-setup 从终端连接 GitHub 并获取 token。那个 token 虽然能让你其他的云端会话访问代码库,但并不足以供项目线程使用。项目中的线程完全运行在云端,必须在目标仓库上安装官方的 Claude GitHub App,且你的 GitHub 账号必须对仓库拥有 push(推送)权限;若仓库属于开启了 SAML SSO 的组织,还必须显式完成组织级的单点登录授权。如果仓库上没装 Claude GitHub App,线程启动前就会报错,根本开不起来。
你本机装的东西,线程一样都带不上
线程运行在云端的全新环境里,你本机 Claude Code 里装的技能、MCP 服务器、插件和工具,一样都不会带过去。如果任务需要使用特定工具或扩展,必须通过以下方式补齐:
- 技能、子 Agent 与自定义命令:提交到项目关联的代码仓库中(例如
.claude/skills/、.claude/agents/和.claude/commands/),线程启动克隆时会自动加载它们;此外,线程也会自动加载你在 claude.ai 账号中启用的技能; - 插件(Plugins):在 Project settings > Plugins 中添加,每个新线程启动时都会加载;
- MCP 服务器:线程通过你 claude.ai 账号上绑定的连接器(connectors)来获取 MCP 工具,所有线程均可直接使用,无需针对每个项目重复配置。但需要特别注意:项目对话本身没有任何连接器,需要使用连接器的工作必须作为任务指派给线程执行;
- 命令行工具与包:在云端环境的 setup script(初始化脚本)中安装;
- 内网访问与环境变量:若需要访问公司内网 API、私有包仓库或需要 API 凭据,应在云端环境(Environment)中配置网络访问域名白名单、环境变量与 API 凭据。
多仓库:仓库里的权限规则和 hooks 不生效
项目支持关联多个代码仓库,但单仓库和多仓库时,仓库里的配置生效规则不一样。
关联多个仓库时,每个仓库的 CLAUDE.md、.claude/ 下的技能、子 Agent 和命令,以及各仓库 settings.json 里启用的插件,都会照常加载;两个仓库对某个插件意见不一时,以 Project settings > Plugins 里的设置为准。
不生效的是各仓库 settings.json 里定义的权限规则(permission rules)、hooks 和 env 环境变量,多仓库时一律不起作用,只有已启用插件自带的 hooks 仍会运行。原因是多仓库时线程从所有仓库克隆目录的上一层启动,不读任何一个仓库的这份文件。
所以在多仓库项目里,统一的规矩要写进项目指令(Project instructions),环境变量要在云端环境里配。另外,在 Project settings 里改的指令、仓库、插件和环境,只对新开的线程生效,已经在跑的线程不受影响。
当前可用范围
- 入口与平台限制:只能在 claude.ai/code 网页端、桌面端以及 Claude 移动端 App 中使用,终端 CLI 暂不支持(CLI 里的
claude project命令用于管理本地目录状态,与此完全无关),也不能通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 等第三方平台使用; - 仅限云端执行:本地会话无法加入项目,线程只在云端运行。官方说对本地工作流的支持「很快」会来;
- 单人私有与归属固定:项目只属于创建它的个人用户,无法与他人共享,线程记录也没有分享选项,beta 期间没有组织级管控;此外,线程严格归属于启动它的项目,无法在项目之间移动或复制;
- 没提交的改动可能丢:线程的沙箱在两轮之间暂停,继续时恢复;万一恢复不了,线程会从一份全新克隆接着做,没 commit 的改动就没了。长任务要在指令里让线程阶段性 commit 并 push 到远端分支。
总结:如何开始你的第一个长周期项目?
新版项目把开会话、分派和跟踪交给了协调者,你要花心思的地方变成了:规则写没写清、环境配没配好、交回来的活怎么验。
在向新项目正式派发成批工作之前,建议按照官方指引做好初始设置与验证:
- 编写项目指令(Project instructions):利用好最多 16,000 字符的指令空间,作为每个新线程的启动简报。明确写清工作在哪个代码库和分支上展开、PR 如何命名、线程在完工前如何自行检查(如运行
make test和make lint并在最终汇报中附上摘要)、遇到依赖或凭据缺失时禁止自行猜测或 mock 伪造,以及哪些操作必须先在线程内获得你的许可。关于单一仓库特有的规则,则写在仓库的CLAUDE.md中。 - 先试跑一小块任务并检查结果:先发送一小块真实工作,或者点击启动 Claude 推荐的建议线程;待其完成后,点开线程查看它如何汇报、在其分支上具体做了什么修改。若发现其做出了错误假设或缺少访问权限,及时回到指令或环境中修复。
- 检查线程的模型与思考强度:前往 Project settings > General 检查 Thread model 与 Thread effort。新项目默认所有线程都运行在 Opus 模型的高思考强度(High effort)下,这会最快消耗套餐额度,可根据任务复杂度换用较小模型或调低思考强度。
- 先设限磨合,符合预期后再放开:在项目对话中要求 Claude 先提出建议线程(propose threads)、等你看过点头后再启动,并限制一次最多同时跑几个线程。待跑过几轮、确认其拆解和汇报方式完全符合你的预期后,再放开这些限制。
谁现在能用
- 现在:公开 beta,先推给用过云端会话、且在 claude.ai 聊天或 Cowork 里没有旧项目的 Pro、Max 用户。
- 稍晚:用过旧版项目的用户晚一点推,好让旧项目顺利迁过来。
- 接下来一周:扩大到更多 Pro、Max 的 Claude Code 用户;之后才轮到整个 Claude,以及 Team 和 Enterprise 方案。
- 怎么判断轮到你没有:claude.ai/code 侧边栏或桌面端 Code 标签页里看不到 Projects,就是还没推到你的账号,可以先加入等候名单。
- 在哪用:网页(claude.ai/code)、桌面端,以及 iOS、Android 的 Claude 手机 App。
- 旧项目怎么办:照常能用,等新体验推广到聊天和 Cowork 时再统一升级。
从静态资料夹到「带班主管」:Claude Code 长期协调架构
在旧版项目里,多会话调度全靠人脑记忆与人工传话;新版 Projects 的核心跃迁,是将项目转化为一个拥有持续记忆的中央协调对话,自动派发具有独立沙箱与 Git 分支的并行云端线程。
旧版 Projects 只是归拢文件与聊天记录的被动容器。碰上一项要做好几天、跨好几个代码仓库的活,决定每个会话做什么、重复交代背景、逐个盯进度的「调度员」全是你自己。这次改造的核心转变是从「静态资料夹」变成「带班主管」:整个项目收拢为一个持续运行的中央对话,你在对话里提出目标,由 Claude 担任协调者,自动将需求拆解成多个并行运行的线程(thread)。
这里的线程不是简单的后台命令,每一个线程本质上都是一个独立的云端 Claude Code 会话。它们各自拥有专属的上下文窗口,在云端独立的沙箱和 git 分支上并行编写代码、跑测试、在需要时开 PR,并在电脑合盖离线后继续运转。
六态流转与 Waiting on you 决策断点
在项目对话右侧的总览(Overview)面板中,线程按状态分进六组。大多数操作线程自己跑(auto mode),碰到要你拍板或批准的事就停下来,排进 Waiting on you:
关键断点边界:当某个线程确实需要你的批准时,提示只会出现在该线程内部,线程会一直等到你在该线程里作答;如果你在项目对话里告诉 Claude 继续,指令是传不到线程内部的。所以批准和拍板,要点开那个线程,在它自己的输入框里回答。
Projects 与 Claude Tag 的关系
两者采用相似的分层:上层会话接活,独立线程执行,并共享记忆与定时跟进。它们服务的场景不同:Claude Tag 面向 Slack 团队,Projects 面向个人长期工作。
| Claude Tag | 项目(Projects) | |
|---|---|---|
| 接活的一层 | 频道自己的会话 | 项目对话里的 Claude |
| 干活的一层 | Slack 线程里的工作会话,各有沙箱 | 线程,各是完整云端会话、各在自己的分支 |
| 记忆 | 公开频道共享给整个工作区 | 这一个项目的记忆,项目对话和任何线程里都能让它记 |
| 定时与跟进 | 例行任务、跟随 PR | 例行任务、线程盯 PR 自动修 |
| 谁派活、用谁的权限 | 频道里任何人;管理员配的服务账号 | 只有你;你自己的 GitHub 权限和连接器 |
另外,干活的线程不是 Claude Code 里那个「子 Agent」功能,而是完整的云端会话;线程内部需要时还能再用子 Agent 拆活。
横向定位:五种并发模式的职责边界
面对 Claude Code 演进出的多项任务并发机制,开发者极易混淆其适用场景。它们的核心区别在于两点:谁来做任务调度,以及代码跑在本地还是云端:
| 并行方式 | 谁来调度 | 运行环境 | 核心适用场景与边界 |
|---|---|---|---|
| 子 Agent (Subagents) | 主会话内部 Claude 委托 | 发起它的主会话内 | 临时处理检索、日志等旁支任务,避免污染主上下文。 |
| Agent 视图 (Agent view) | 开发者本人手动派发 | 本地机器独立 worktree | 手头多个互不相干的任务,交由本地并行执行并统一监控。 |
| Agent 团队 (Agent teams) | Lead 会话领头协同 | 本地或单一云端会话 | 单项攻坚任务拉起队友协作,互相直接发消息,完工即散。 |
| 动态工作流 (Workflows) | 确定性脚本程序驱动 | 文档未单列 | 超大规模确定性工序(如 500 文件迁移、全库代码审计)。 |
| 项目 (Projects) | 长期协调者 (Coordinator) | 全托管独立云端沙箱 | 跨数天/数周长周期工程;离线推进、多分支演进、盯 PR 闭环。 |
云端隔离红线:开工前必配的三件事
将长周期任务交给项目前,开发者必须意识到云端沙箱的全新环境特性:线程运行在云端的全新环境里,你本机 Claude Code 里装的技能、MCP 服务器、插件和工具,一样都不会带过去。
/web-setup 连上的 GitHub token 只够其他云端会话用,项目线程用不了。目标仓库必须装 Claude GitHub App,你的账号要有 push 权限;组织开了 SAML SSO 还要单独授权。.claude/ 目录;MCP 工具通过 claude.ai 绑定的 Connectors 全局分发(注意协调对话本身无连接器,仅线程可调)。额度:比单个会话耗得快
几个线程同时跑,就是几个完整会话同时在耗;盯着 PR 的空闲线程碰上 CI 失败或新评审还会被唤醒再耗一次。不想吃掉下一个窗口,就在线程里点 Stop 或暂停整个项目。
Let Claude coordinate ongoing work with Projects - Claude Code Docs
Hand Claude a stream of related tasks in one conversation and let it run them as parallel cloud sessions that share repositories, instructions, and memory.
A project is one ongoing conversation where Claude coordinates a stream of related work for you. You tell it what needs doing and it starts a thread for each task. Each thread is usually a cloud session: Claude Code running in the cloud rather than on your machine. When a task needs something only your computer has, you can ask Claude to run that thread on your computer instead of in the cloud, through Remote Control. Threads run in parallel, and you can check on them and steer them from your phone. Cloud threads keep going after you close your laptop, while a thread on your computer runs only while that computer is awake. Without a project, running several sessions means doing the coordinating yourself: you decide what each one works on, repeat the same background at the start of each, and check back to see which finished or needs an answer. With a project, you instead:
- Send work to one place: paste a bug report, a stack trace, or a list of tasks into the conversation whenever one comes up. Claude starts a thread for each piece of work or passes it to the thread already working in that area, and answers quick questions in place.
- Set context once: every new thread starts with the project’s instructions, so a rule you state once, such as which branch to target, reaches all of them.
- Walk away and come back to finished work: when you come back an hour later or the next morning, the Overview pane shows which threads finished, which pull requests are ready for review, and which thread is waiting for your answer.
If you already know the work you want a project to run, go straight to Create a project.
When to use a project
A project is worth creating when the work has a goal that outlasts one session and keeps producing tasks. These kinds of work suit a project well:
- One goal across many repositories: “Bring every service up to the new lint config.” Claude can run a thread per repository, each with its own pull request, and the Overview pane shows which ones are ready for review.
- An area you keep feeding: the bugs, stack traces, and review requests for one service, pasted into the conversation as they reach you. A pitfall you tell Claude to remember after one fix is in project memory for the next.
- A build or migration bigger than a session: “Build what
docs/spec.mddescribes” or “Move the app off the deprecated ORM.” The work splits into threads that each take a part, decisions you ask Claude to remember early on reach the later cloud threads, and the spec changes and bugs you find during the build go into the same conversation. - Work that isn’t code: a folder of contracts or a support-ticket export you keep coming back to with new questions, such as “find the ten most common integration mistakes in these tickets.” Upload the documents instead of adding a repository, and threads deliver each write-up as a file on the project’s Library tab.
In any of them you can send a batch of tasks, tell Claude to start without asking you to confirm, walk away, and find the threads that need you under Waiting on you when you’re back, or ask Claude to put part of the work on a schedule as a routine. If one of these is your situation, create a project.
When something else fits better
A project still fits when only some tasks need your machine. Cloud threads work on GitHub repositories and on the files, folders, and Google Drive folders you upload to the project, and for the occasional task that needs a local database or a tool on your computer, you can ask Claude to run that task’s thread on your computer. Something other than a project fits better in these cases:
- One task that fits in a session: “Fix the flaky login test.” Start a cloud session yourself.
- Work where every task needs your machine: a local database, a device emulator, or an API behind your VPN. Use a local session, or agent view to run several at once. If the work only needs local files, upload them to the project instead.
- One task that repeats on a schedule with no conversation around it: “Post a dependency report every Monday.” Create a routine on its own.
- Several people giving Claude work and steering it together in a Slack channel: see Claude Tag.
A project draws on the same plan limits as your other Claude Code sessions and uses them faster. Usage and cost covers what draws on your plan and how to keep it down.
How a project is organized
A project is one coordinating conversation with Claude plus the threads it starts to do the work. These are its parts:
- The project conversation: one long-running session where Claude acts as coordinator. It takes what you send, decides what becomes a thread, and keeps track of every thread it started. It sees what threads report back, not every step they take.
- Threads: the workers. Each is a separate session with its own context window that does one piece of work and reports back to the conversation when it finishes. A cloud thread works on its own branch and opens a pull request when the work calls for one.
- What every cloud thread starts with: The project’s repositories and files, plus its instructions and memory The
CLAUDE.mdand skills in each of the project’s repositories, and in a project with one repository, that repository’s permission rules and hooks too The connectors on your claude.ai account A cloud environment that sets its network access, environment variables, network secrets, and installed tools - The Overview pane: where you see all the threads at once and which of them need you. Its other tabs are Library for the files you added and the files threads produced, Pull requests for the ones threads opened, and Routines for scheduled work in the project.
Cloud threads don’t pick up anything from the Claude Code setup on your own machine. Get skills, plugins, connectors, and tools into threads covers how to give them what they’d otherwise be missing. Here is how those parts connect, from you through the conversation to the threads doing the work, with Overview tracking their state:
Create a project
You create and use projects at claude.ai/code, in the Code tab of the desktop app, or in the Claude mobile app for iOS and Android. In the browser and the desktop app there are two ways to start a project:
- From scratch, when you know the stream of work you want Claude to run: open the New project dialog and name it. Start a new project from scratch walks through the dialog.
- From a cloud session that’s already doing the work: choose Continue as project from that session’s menu, and Claude proposes the project’s setup from what the session was doing. See Start from an existing cloud session.
Either way, check the prerequisites first.
Check the prerequisites
Before you create a project, check your plan, your GitHub setup, and what the work needs to reach:
- Plan: you’re on Pro or Max and Projects shows in your sidebar.
- GitHub, if the project will work on code: your code is on github.com rather than GitHub Enterprise Server, GitLab, or Bitbucket, your connected GitHub account has push access to it, and the Claude GitHub App is installed on it. If you connected GitHub with
/web-setup, that token lets your other cloud sessions reach a repository but isn’t enough for a project’s cloud threads, which need the Claude GitHub App. Set up GitHub access has the steps. - Network access, secrets, and tools: for cloud threads, these come from the project’s cloud environment. The default environment already reaches common package registries, so check this only if the work needs other domains, a secret, or a tool that isn’t preinstalled. If the work needs an MCP server, check that it shows as connected in your claude.ai connectors.
Start a new project from scratch
Starting a project from scratch means opening the New project dialog, naming the stream of work, and optionally giving it a goal and the repositories and files it works on. Only the name is required, so you can create the project first and fill in the rest as the work takes shape.
1
2
3
The project is now listed under Projects in the sidebar, and its conversation is open. Your first batch covers what to set up before you send it work.
Start from an existing cloud session
If you already have a cloud session doing work that belongs in a project, open the session’s menu in the sidebar and choose Continue as project or Move to project:
- Continue as project creates a new project named after the session and opens it. Claude reads the session and posts Setup recommendations in the conversation for you to confirm. The original session stays in your session list, and if it was in the middle of a turn it keeps running, so stop it yourself if you don’t want both working at once. If you use the Set up project banner that can appear above a cloud session’s message box instead, the result is the same, except that the session’s running turn stops once the project opens.
- Move to project brings the session’s work into an existing project. It posts a message in that project’s conversation asking Claude to read the session and pick up where it left off, and new work continues in the project’s own threads. The original session stays in your session list, unchanged.
A local session doesn’t have these options. To continue its work in a project, describe the work in the project conversation, or push its branch, add that repository to the project, and name the branch in the task.
Set up GitHub access
Most GitHub setup happens once, not per project. You connect your GitHub account to Claude once, and the Claude GitHub App is installed once per repository, or once for a whole GitHub organization if you give it all repositories. You come back to these steps when you add a repository the Claude GitHub App doesn’t cover yet or one in a GitHub organization that enforces SSO.
1
2
3
When one of these steps is incomplete, the New project dialog and the project page name the missing step and link to where you finish it. Finish the step there, then click Check again if the dialog offers it. If a repository is still missing from the list afterward, open the Claude GitHub App’s installation on GitHub, at github.com/settings/installations for a personal account, and confirm the repository is listed under Repository access. For the error messages a thread or the project reports when access is still wrong, see Repository access errors.
Work in a project
Give Claude work through the project conversation: tasks one at a time or several at once, plus updates and loose thoughts as they come up. Claude routes each message, and threads do the work and report back.
Your first batch
Before you send a new project a batch of work, set it up so the first threads come back the way you want:
- Write project instructions: the brief every thread starts from, such as which branch to target, how a thread checks its work, and what needs your go-ahead.
- Send one small piece of the real work, or start one of the threads Claude suggested if it offered any, and open the thread when it finishes to see how it reports back and what it did on its branch. If it assumed something wrong or couldn’t reach what it needed, Threads guessed or stalled instead of asking covers where to fix that.
- Check Thread model and Thread effort in Project settings > General. A new project runs every thread on Opus at high effort, which draws on your plan fastest; Choose models and let Claude manage context covers the alternatives.
- Ask Claude to propose threads before starting them and to run a few at a time, and drop those limits once a few threads come back the way you want.
Send work and read results
Claude decides where each message you send in the conversation goes:
- A quick question usually gets an answer in the conversation.
- New work goes to a new thread or to a thread already working in that area, and Claude tells you which. Each new thread shows up under your message as a card: a box with the thread’s title and status, which you click to open the thread.
- Several unrelated tasks in one message become separate threads.
If Claude routes something differently than you wanted, say so. Tune how Claude runs a project lists things you can tell it, such as reusing an existing thread for follow-ups or answering in place instead of starting a thread. A thread’s full results stay in the thread, and you open its card in the conversation to read them. Files a thread produced are also on the Library tab in Overview. Sometimes Claude proposes threads instead of starting them, in a Suggested threads list. Click the arrow on a suggestion to start that thread. When several are listed, a button under the list starts all of them.
Review a thread’s pull request
When a cloud thread changes code, this is what it does unless you tell it otherwise:
- Branch: works on a new branch, started from the repository’s default branch.
- Pull request: opens one when you ask, and can open one on its own for a bug fix or another concrete change.
- After it opens: watches the pull request with auto-fix turned on, whether or not auto-fix is on for your other cloud sessions. It pushes fixes when CI fails, addresses review comments, and replies in the thread when checks pass and the pull request is ready for you.
When a thread has pushed a branch or opened a pull request, its card in the conversation can show a button for the next step:
- Resolve conflicts, Fix CI, Address comments, and Merge it send that instruction to the thread as a message from you, so you can prompt the thread yourself instead of waiting for it to react to the pull request.
- Review PR opens the pull request on GitHub.
- Create PR appears when an idle thread has pushed a branch but hasn’t opened a pull request. Clicking it creates the pull request from that branch directly rather than sending the thread an instruction to open one.
To change when threads open pull requests, for example only when you ask, or which branch they start from, say so in the task or in project instructions.
See what needs you in Overview
The Overview pane beside the conversation tracks the project’s threads. It’s already open the first time you open a new project. The Overview button in the project header closes and reopens it, and shows a dot when a thread is waiting on you. In the desktop app, you also get a desktop notification when Claude posts in the conversation, a thread hits an error, or a thread needs your input, so you don’t have to keep the project open to find out. To also get one each time a thread finishes a turn, or to turn them off for a project, choose Notifications in the project’s sidebar menu. These notifications are desktop-only: in a browser, check the dot on the Overview button. The pane’s Threads tab groups threads by state:
| Group | What’s in it |
|---|---|
| Ready for review | Threads whose pull request is open and awaiting review |
| Waiting on you | Threads that need your reply or approval, or that failed |
| Working | Threads still running |
| Landing | Threads whose pull request is approved or queued to merge |
| Idle | Threads that finished and aren’t waiting on anything |
| Resolved | Threads marked done: by you from the thread’s menu, by Claude once you’ve taken the last step, such as merging its pull request, or automatically after a week with no activity. You can reopen one from the same menu |
The pane’s other tabs are Library for the files and folders you added and the files threads produced, Pull requests once threads have opened any, and Routines for the routines Claude set up from this project.
Open a thread when you need control
Click a thread’s card in the conversation or its row in Overview to open its transcript in the Overview pane. From there you can:
- Read what Claude did, step by step.
- Steer the task by writing in the thread’s own message box. A message there goes straight to that thread, while a follow-up in the project conversation reaches it only when Claude matches the follow-up to that thread.
- Answer a permission prompt the thread is waiting on.
- Interrupt the thread with Stop, which replaces the send button while the thread is working, or by pressing Esc.
Choose models and let Claude manage context
Set models and effort in Project settings > General. A new project runs Opus everywhere, with high effort for threads and low effort for the conversation:
- Thread model and Thread effort apply to threads. To use a different model for one task, ask for it in the task; for a thread already running, use that thread’s model picker.
- Coordinator model and Coordinator effort apply to Claude in the project conversation.
You don’t manage context windows in a project. Threads compact automatically, and the conversation works from recent messages, recent threads, and project memory rather than its full history, so it keeps going for as long as the project runs. Put anything that must never be dropped in project memory. If one thread outgrows its context, it shows Claude ran out of context on this turn.
Tune how Claude runs a project
Tell Claude in the conversation how many threads to run at once, when to post updates, and when to open pull requests. If Claude is coordinating in a way you don’t want, say so. For example, you can say:
- “Propose threads and wait for my go-ahead before starting them” or “Start these now without asking me to confirm”
- “Run at most two threads at a time” or “Reuse an existing thread for follow-ups in the same area”
- “Post shorter updates” or “Only post when something finishes or is blocked”
- “Give me a status update on every thread”
- “Do this task with a smaller model”
- “Don’t open a pull request until I’ve seen the plan”
- “Tell me what’s wrong in these repositories and don’t fix anything yet”, when you want to go through the findings before any of them becomes a thread
- “Answer that here instead of starting a thread”, when Claude starts a thread for something you meant as a quick question
Claude saves preferences like these to project memory on its own and follows them in later cloud threads. They’re instructions Claude keeps to, not enforced settings, so a thread limit you give this way isn’t a hard cap. Add one to project instructions when you want it worded exactly and applied to every thread from the start.
Unblock a thread waiting on approval
Threads run in auto mode when the thread’s model supports it, so most tool calls run without asking you. When a thread needs your approval, the prompt is inside that thread and the thread waits until you answer it there. Telling Claude in the project conversation to go ahead doesn’t reach it. Each approval covers that prompt, or the rest of that thread if you choose the broader option. To let every thread run certain commands without asking, or to block some, add permission rules to the repository’s .claude/settings.json. Check that cloud threads in your project apply them:
- One repository: cloud threads apply the rules. See What threads pick up from your repositories.
- Several repositories, Anthropic-hosted environment: no repository’s permission rules reach a cloud thread, so you rely on auto mode and on the approvals you give inside each thread.
- Several repositories, self-hosted environment: see which repository’s settings apply.
Run a thread on your own computer
When a task needs something only your computer has, such as a local database, a device emulator, or an API behind your VPN, ask Claude to run the thread for that task on your computer instead of in the cloud. When you ask in the project conversation, the thread is a Claude Code session in a folder on your machine, connected through Remote Control. The project’s other threads keep running in the cloud. Compared with a cloud thread, a thread on your computer:
- Works with the files, tools, MCP servers, and Claude Code settings on that machine, including its hooks and permission rules, instead of the project’s cloud environment
- Starts with the project’s instructions, but not with its memory files loaded
- Runs only while that computer is awake with Remote Control turned on
1
2
3
The thread runs in auto mode, so Claude runs commands and edits files in that folder without asking you each time. If auto mode is unavailable or turned off in that computer’s Claude Code, the thread runs without it, and any permission prompt it raises waits for your answer in the thread, as Unblock a thread waiting on approval describes. While the thread runs, a laptop icon in its header shows whether your computer is connected. Click it to see which folder the thread is using or to turn the connection off. The thread pauses while that computer is asleep, and stops if the desktop app or claude remote-control quits. Lost contact with your folder covers getting it going again. In the desktop app, turn on Keep this computer awake for Remote Control under Settings > Claude Code to stop the computer from sleeping on its own. A project can’t run a thread on your computer while Require trusted devices is on for your account.
Give a project standing context
Project memory, project instructions, and the project’s repositories, files, and environment carry context across threads. You set each one once.
| Context | What it carries | How you set it |
|---|---|---|
| Project memory | Notes Claude keeps about the project, such as requirements, decisions, and pitfalls, stored as files. Every cloud thread reads the index file MEMORY.md when it starts and opens the other files when it needs them | Ask Claude in the project conversation or any cloud thread to remember a requirement, a decision, or a pitfall, or to forget one. Read, edit, and delete the files in Project settings > Memory |
| Project instructions | Text sent to each new thread and to Claude in the project conversation, up to 16,000 characters. Write project instructions covers what to put in it | Project settings > Memory > Project instructions, or ask Claude to change the instructions |
| Repositories, files, and environment | The repositories every cloud thread clones, the folders and files it can read under /mnt/project-files, and the cloud environment it runs in | Repositories and environment in Project settings > Environment, or ask Claude in the conversation to add a repository to the project. Files and folders from Add on the Library tab in Overview |
Project settings > Memory lists these files under Auto memory, because Claude writes them itself as it works in the project. They’re separate from the auto memory Claude Code keeps on your machine, even though both use a MEMORY.md index. Project memory is also separate from the CLAUDE.md files in the project’s repositories. Each cloud thread still reads those CLAUDE.md files from its clone when it starts, so put instructions about a repository in its CLAUDE.md and notes about the project in project memory.
Write project instructions
Project instructions are the brief every new thread starts from. Click the gear icon in the project header to open Project settings, then go to Memory > Project instructions. A useful brief covers:
- What the project is for
- Where the work happens: which repositories, which branch to start from, how to name pull requests
- How a thread checks its own work before calling it done
- What to do when something it needs is missing
- What needs your go-ahead first
For example:
Rules about one repository, such as its build commands, belong in that repository’s CLAUDE.md, which every cloud thread reads when the repository is part of the project. Once work is underway, when you correct a thread, also tell Claude to remember the correction: it goes into project memory and later cloud threads start with it.
Decide which repositories to add
The repositories you add to a project come with everything in them, their code, CLAUDE.md, and skills, in every cloud thread. Repositories you don’t add are still within reach: a cloud thread can add one to itself when its task needs it. Most projects use both:
- Add it to the project, in the New project dialog, in Project settings > Environment, or by asking Claude in the conversation to add it to the project. Every cloud thread from then on clones it and starts with its
CLAUDE.mdand skills loaded, whether or not the task touches it. Going from one repository to several also changes what threads take from each repository’s.claude/settings.json; see What threads pick up from your repositories. - Leave it off and let threads add it when needed. A cloud thread whose task needs a repository the project doesn’t have can add it to itself, and a note in the thread says it was added to this thread only. The clone happens partway through the task, so that repository’s
CLAUDE.mdand skills weren’t there when the thread started. The next thread starts without it. A repository added this way needs the same prerequisites as a project repository: the Claude GitHub App installed on it and push access from your GitHub account.
A project doesn’t need a repository at all. Its cloud threads can still research, write documents, and write and run code in their own sandbox, and they deliver files to the Library tab. Any of its cloud threads can still add a repository to itself when a task calls for one. Once the project has repositories, Claude can only add repositories from a GitHub owner the project already uses, whether it adds one to the project or a thread adds one to itself. To bring in a repository from a different owner, add it to the project yourself in Project settings > Environment. For a project that spans many repositories, such as one feature with server, web, mobile, and desktop code, add the one or two repositories nearly every task touches and name the others in project instructions so Claude knows where the rest of the code lives. Cloud threads then start small and pull in the other repositories only for the tasks that need them.
Add files and folders
Add the files and folders you want threads to read in the New project dialog’s Context field, or afterward with Add on the Library tab in Overview. These limits apply to what you add:
- Library tab: up to 100 files and 2 GB in one pick, with a single file up to 480 MB.
- New project dialog: files over 30 MB are skipped, so add larger files from the Library tab after you create the project.
- Folders: when you add a folder from either place, the project receives a copy of its first 100 files up to 200 MB, without any files over 30 MB, hidden files, or
node_modules. A project holds up to 10 folders and Google Drive folders combined, and single files don’t count toward that limit. - Changes after upload: uploads are copies, so a change you make on your computer afterward doesn’t reach the project until you upload the file again and choose Replace when asked about the existing name.
What threads pick up from your repositories
Each cloud thread clones every repository in the project and loads CLAUDE.md and skills from all of them. Permission rules, hooks, and env come only from the .claude/settings.json in the directory the thread starts in.
| In each repository | One repository | Several repositories |
|---|---|---|
CLAUDE.md | Loaded when the thread starts | Loaded from every repository when the thread starts |
Skills, agents, and commands under .claude/ | Loaded | Loaded from every repository |
Plugins enabled in .claude/settings.json | Not loaded. Add the plugin in Project settings > Plugins instead | Not loaded. Add the plugin in Project settings > Plugins instead |
Permission rules, hooks, and env defined in .claude/settings.json | Apply to the thread, except the env keys that no cloud session honors | Don’t apply in an Anthropic-hosted environment. For a self-hosted environment, see which repository’s settings apply |
In a project with several repositories, put standing rules in project instructions and give threads environment variables through the cloud environment.
Choose an environment for threads
Every new cloud thread starts in the project’s cloud environment. The environment sets which domains threads can reach, which environment variables they have, which network secrets are added to their requests, and what the setup script installs before Claude starts. Cloud threads use a default Anthropic-hosted environment until you pick one in Project settings > Environment. If cloud threads need to reach an internal API or a private package registry, or need a token your machine normally holds, change the environment rather than the project: see Network access, Add network secrets, and Setup scripts.
Get skills, plugins, connectors, and tools into threads
Cloud threads don’t have the skills, MCP servers, plugins, and tools installed only on your machine. A thread that Claude runs on your machine through Remote Control uses what’s installed there. To make each of these available to cloud threads:
- Skills, subagents, and commands: commit them to a repository you added to the project, for example a skill at
.claude/skills/<skill-name>/SKILL.md. Each cloud thread clones every repository in the project and loads.claude/skills/,.claude/agents/, and.claude/commands/from each of them, so a skill committed to one repository is available in every cloud thread. Cloud threads also load the skills you enable for your claude.ai account. - Plugins: add them in Project settings > Plugins; they load into each new cloud thread. Plugins that a repository declares in its
.claude/settings.jsondon’t load in cloud threads. - MCP servers: cloud threads get their MCP tools from the connectors on your claude.ai account, which are MCP servers you connect once at claude.ai/customize/connectors. Every cloud thread can use all of them with no per-project setup. The project conversation itself has no connectors, so send work that needs one as a task for a cloud thread. In a project with one repository, cloud threads also load MCP servers from that repository’s
.mcp.json. How connectors reach Claude Code lists the rules for cloud sessions and the settings that turn connectors off. - Command-line tools and packages: install them in the environment’s setup script.
To see which connectors a running cloud thread has at claude.ai/code, open the thread and select Connectors from the + menu beside its message box. Turning a connector off there removes it from that thread and saves that as your account default, so new threads and claude.ai chats start without it until you turn it back on. A cloud thread picks up a connector you add or reconnect after the next message you send it.
Project settings reference
You change project settings at claude.ai/code or in the desktop app, not in settings.json. Open Project settings from Settings in the project’s sidebar menu or from the gear icon in the project header. Settings save as you change them; a text field you’re editing, such as the goal or instructions, shows Save changes and Discard until you leave it. Changes to instructions, repositories, plugins, and environment in Project settings reach new threads, not threads already running.
| Setting | Section | What it controls |
|---|---|---|
| Name, icon, and goal | General | The project’s name and icon in the sidebar, and its one-line goal |
| Coordinator model and effort | General | The model and effort level for Claude in the project conversation |
| Thread model and effort | General | The model and effort level for threads |
| Project instructions | Memory | Standing rules every new thread receives |
| Project repositories | Environment | The repositories new cloud threads clone |
| Cloud environment | Environment | The cloud environment new cloud threads run in |
| Plugins | Plugins | The plugins that load into each new cloud thread |
| Usage | Usage | Token use by thread and by model |
| Memory | Memory | The project’s memory files |
| Restart Claude | General | Restarts the project conversation when Claude stops responding there |
| Pause, Archive, Delete | General | Stops, hides, or removes the project; see Pause, archive, or delete a project |
Pause, archive, or delete a project
All three controls are at the bottom of Project settings > General:
- Pause: stops everything at once. Every running thread and the conversation are interrupted, no new threads start, routines don’t run, and the project doesn’t accept messages until you resume it. Click Resume in the same place or on the banner above the project’s message box; a paused thread continues when you send it a message after that.
- Archive: hides the project from the sidebar and archives its threads, which stops any thread that was running or watching a pull request. Routines in the project don’t run while it’s archived. To bring the project back, open it from the Projects page and click Unarchive. Its threads stay archived until you unarchive them individually from the session list.
- Delete: permanently removes the project along with its threads, its memory, and its files, and turns off the project’s routines. This can’t be undone. Branches and pull requests the threads pushed to GitHub aren’t affected.
Usage and cost
Project usage counts against the same plan limits as your other Claude Code sessions, and a project can’t spend past those limits on its own. A thread that reaches your plan’s limit waits and continues on its own when the limit resets, so work you left running starts using your next usage window without a message from you. A thread hit the usage limit covers what you see, how to stop it, and the one case that doesn’t wait. Work goes past your plan’s limits only if you have turned on usage credits for your account. A thread can’t turn them on for you.
What draws on your plan
A project uses your limits faster than a single session does, and on a Pro plan in particular you should expect to reach your limit sooner on days you run one. These are the parts of a project that use your plan:
- Running threads: each is a full session, and several can run at once. There’s no fixed number; Claude starts as many as the work calls for, and a limit you ask for is a preference rather than a cap. The enforced limit is 200 new threads per day across your projects.
- The conversation: Claude uses tokens of its own reading what threads report and deciding what to do next.
- Threads watching a pull request: an idle thread wakes up and uses your plan again when CI fails or a review comment arrives on its pull request. To stop that, ask in the thread for it to stop watching the pull request.
A project with no running threads, no watched pull requests, and no new messages doesn’t use your plan while it sits idle, and neither does an archived project.
See and reduce a project’s usage
Open Usage in Project settings to see token use by thread and by model, and how much went to the project conversation. To bring it down:
- A follow-up routed to a thread that has been idle longer than the cache lifetime, an hour on Pro and Max within your plan’s limits, re-reads that thread’s whole conversation before doing anything. For new work, asking Claude to start a fresh thread can use less than reviving a large old one.
- For work that doesn’t need the largest model, choose a smaller model or a lower effort level for threads, the conversation, or both.
- Ask Claude in the project conversation to run fewer threads at a time, or to answer small questions itself instead of starting a thread.
How projects relate to other Claude Code features
Several Claude Code features let more than one session work at the same time, so running work in parallel is not by itself what a project is for. In a project, Claude starts and tracks the sessions instead of you, and each one starts from the same instructions. This is how each neighboring feature connects to a project:
- Claude Tag: Claude Tag is Claude in your team’s Slack channels, on Team and Enterprise plans. Anyone in a channel can give it work, everyone in the channel sees and steers it, and it uses connections an admin set up for that channel. A project is yours alone: you’re the only one who sends it work or sees its threads, it uses your own GitHub access and connectors, and it’s on Pro and Max. How Claude Tag differs from Cowork and Claude Code has the side-by-side.
- Cloud sessions: every thread is a cloud session unless you ask Claude to run it on your machine. Either way, Claude starts and tracks it instead of you. A cloud session you started yourself can become a project or feed one through Continue as project or Move to project.
- Routines: when you ask for scheduled work in a project, Claude creates a routine that runs as threads in that project and appears on its Routines tab. Routines you create outside a project keep working on their own.
- Remote Control: Remote Control connects claude.ai to a Claude Code session running on your machine. When you ask Claude in a project to run a thread on your computer, the project uses Remote Control to do it.
- Local sessions and agent view: a session you start yourself in your terminal, IDE, or the desktop app’s local environment can’t be added to a project. Agent view is a screen for tracking several local sessions side by side, and you still start each one and give it its task yourself.
- Worktrees: a worktree gives each local session its own working copy of a repository. Cloud threads don’t need them: each clones its repositories into its own cloud sandbox and works on its own branch.
- Agent teams: an agent team is one session that starts teammate sessions for a single task, on your machine or inside a cloud session, and ends with that task.
- Subagents: a subagent runs inside one session, does a side task in its own context window, and returns a summary to that session. A project’s threads are whole sessions that Claude starts and that report back to the project conversation, and a thread can still use subagents for its own side tasks.
- Projects in claude.ai chat and Cowork: the earlier Projects experience, which groups conversations and reference files without threads or a coordinator. Those projects keep working as they do today until the redesigned experience reaches them.
Run agents in parallel compares these options side by side.
Limitations
- Projects are available at claude.ai/code, in the desktop app, and in the Claude mobile app, not in the terminal CLI, the VS Code extension, or the JetBrains plugin, and not through Amazon Bedrock, Google Cloud’s Agent Platform, or Microsoft Foundry.
- Project threads are cloud sessions, or sessions on your own machine through Remote Control, with Anthropic as the model provider in both cases. Security and Data usage cover how cloud sessions are isolated and what’s retained, and Connection and security covers how a thread on your machine connects and what’s stored.
- You can’t add a session you started yourself on your machine to a project. A project reaches your machine only by running a thread there through Remote Control, and that section lists what it needs.
- A cloud thread’s sandbox pauses between turns and resumes when the thread continues. If the sandbox can’t be resumed, the thread continues from a fresh clone, so uncommitted changes can be lost. On long tasks, ask Claude to commit and push work in progress.
- A project belongs to one user. You can’t share a project or its threads with another user, and thread transcripts don’t have the share option other cloud sessions have. There are no organization-level controls for projects during the beta.
- A thread belongs to the one project that started it. You can’t move or copy a thread to another project, or move it out to stand alone. Move to project goes the other way only: it brings a cloud session’s work into a project. You can’t merge two projects into one.
Troubleshooting
For the GitHub setup prompts in the New project dialog, see Set up GitHub access.
A thread looks stuck
Claude doesn’t post each step a thread takes, so a thread that shows as running with no new messages in the project conversation is usually still working. A new cloud thread also provisions its cloud environment before Claude begins, so its first update takes a moment. Open the thread to read its transcript. If the thread is waiting on a permission prompt, answer it there.
Threads guessed or stalled instead of asking
When several threads come back having assumed something wrong, worked around missing access, or stopped with “blocked”, the cause is usually the same gap in the project’s setup rather than a problem with each task. Sort out which threads are sound before you fix anything:
- Ask Claude in the conversation: “For every open thread, list what you asked it to do, what it assumed or couldn’t reach, and what it’s waiting on.” Claude reads each thread and answers in the conversation.
- For threads that started from a wrong assumption, open the thread from Overview and mark it resolved from its menu, or tell it what to do instead in its message box. Its branch and any pull request stay on GitHub until you delete them.
- Fix the gap once, in project instructions or the environment, then send one thread before sending the rest of the work again as new threads.
Claude hasn’t responded
The project conversation shows a “Claude hasn’t responded” banner when Claude is running but its replies aren’t reaching the project. Click Restart Claude on the banner, or go to Project settings > General and click Restart in the Restart Claude row. Claude reconnects to the conversation; any reply it was in the middle of writing is lost, and threads aren’t affected.
Repository access errors
Three messages mean a thread or the project can’t reach one of its repositories. A project’s cloud threads need the GitHub prerequisites even when your other cloud sessions clone the same repository without trouble.
- “Couldn’t start the session — Claude doesn’t have GitHub access to this project’s repository”, reported before the thread starts, when the Claude GitHub App isn’t installed on that repository, is suspended, or isn’t linked to the GitHub account you connected.
- “Unable to access your repository”, reported by a thread when its clone fails: GitHub rejected the clone, the repository wasn’t found under the name the project has, or the branch the thread was asked to start from doesn’t exist.
- “Claude can’t access” a repository, shown when you save repositories in the New project dialog or Project settings. The message continues with an install link and a reconnect link. Use the install link if the Claude GitHub App isn’t on that repository, and the reconnect link if it is, since the GitHub App can be installed on GitHub without being linked to the account you connected to Claude. If the message says the GitHub App is suspended or doesn’t include this repository, follow its link to GitHub to fix that.
To fix any of them, click the button the message offers, such as Install GitHub App or Select repositories on GitHub, then Check again. When the block is on the GitHub organization’s side, such as an owner who hasn’t approved the app or an IP allow list that excludes Claude, the message shows a See how to fix link instead. If there’s no button, follow Set up GitHub access, then send another message to retry.
A thread hit the usage limit
When a thread or the project conversation reaches your plan’s five-hour or weekly limit, it keeps retrying on its own and continues when the limit resets. While it waits, the thread shows Service is busy with “Claude is still retrying and will continue automatically.” You don’t need to do anything for the work to continue. If you’d rather it not use your next usage window, click Stop in the thread, or pause the project to hold every thread. A thread that a routine started doesn’t wait: its turn stops with a limit error, and you send it a message after the limit resets. Usage limit errors explain the limits and when they reset.
Additional usage credits are required
A thread or the project conversation made a request your plan covers only with usage credits, such as one to a model or context size your plan doesn’t include, and usage credits aren’t turned on for your account. Add usage credits to your subscription covers who can turn them on or buy them on each plan. Once credits are available, send another message to retry.
Lost contact with your folder
A thread running on your computer shows this when the Claude Code session there stopped responding, usually because the computer went to sleep or the desktop app or claude remote-control quit. Wake the computer, and if the desktop app or claude remote-control is no longer running there, start it again: reopen the app and confirm Use this computer from your phone and claude.ai is still on under Settings > Claude Code, or run claude remote-control again in the same folder.
Other messages
These messages name their own cause. The table gives the next step for each.
| Message | What to do |
|---|---|
| ”Unable to connect to repository” with “Claude couldn’t reach GitHub to fetch your repository” | Wait a moment, then send another message to retry |
| ”Unable to connect to repository” with “Claude couldn’t access your repository or environment” | Your GitHub account needs push access to the repository, and the environment must still exist. Check both in Project settings > Environment, then retry |
| ”Couldn’t show the setup proposal” | The app you have open is older than the Setup recommendations Claude sent. Refresh the page or restart the desktop app, or ask Claude to propose the setup again |
| ”The project’s environment was removed” | Choose a different environment in Project settings > Environment; the change applies to new threads |
| ”Setup script failed” | Click Edit setup script on the error, fix the script in the environment, then send another message. Setup script failed lists common causes |
| ”Claude ran out of context on this turn” | The thread filled its context window. If the message says the thread continues in a fresh session, it carries on by itself; otherwise ask Claude in the project conversation to start a new thread for the remaining work |
| ”Couldn’t start in” followed by your folder’s name | You allowed a thread to run on your computer, but the session couldn’t start there. When a line under the message gives the reason, fix that, then ask Claude to run the task again |
| ”Claude is out of date on your device” | The computer you picked to run a thread has a Claude Code version older than v2.1.280. Update Claude Code there, or update the desktop app if that’s what connects the folder, then ask Claude to run the task again |
| ”Reached the turn limit” | The thread reached the cap on agentic turns that CLAUDE_CODE_MAX_TURNS sets. Send another message to continue, or raise or remove that variable where it’s set |
- Use Claude Code in the cloud: how the cloud sessions behind each cloud thread work, including GitHub access options and auto-fix on pull requests
- Configure cloud environments: change what cloud threads can reach on the network, give them environment variables and network secrets, and install tools with a setup script
- Automate work with routines: schedules, triggers, and management for routines, including the ones Claude creates from a project
- Manage multiple agents with agent view: run and track several sessions on your own machine when the work needs tools or services only your machine can reach
- Projects redesigned: from folder to conversation: the launch announcement, with the thinking behind making a project a conversation with Claude
