必须用composer config bitbucket-oauth.bitbucket.org命令写入app password,因composer 2.2+仅识别该键名,强制校验域名、拒绝非app password格式、自动写入auth.json并设600权限;手改auth.json易出错,http-basic等其他方式已彻底失效。

必须用 composer config bitbucket-oauth.bitbucket.org 命令写入 App Password,其他方式(手改 auth.json、环境变量、http-basic)在 Composer 2.2+ 中基本无效。
为什么 composer config bitbucket-oauth.bitbucket.org 是唯一可靠入口
Composer 2.2+ 彻底移除了对 http-basic.bitbucket.org 和旧 OAuth consumer 的支持,只解析这个特定键名。它内部强制做三件事:校验域名是否严格为 bitbucket.org(不接受 www.bitbucket.org 或带协议前缀)、拒绝非 App Password 格式的值、自动将凭证写入 auth.json 并设权限为 600。手写 auth.json 容易因空格、换行、字段嵌套错误或权限不对导致静默跳过认证。
- 命令中域名必须写成
bitbucket.org,不能加https://、www.或路径 - App Password 必须由你本人的 Bitbucket 账号生成(非团队账号),且至少勾选
Repositories: Read - 执行后无回显,验证是否成功请运行:
composer config --auth --list | grep bitbucket
bitbucket-oauth 配了还报 401/403 的真实原因
不是 token 没生效,而是 Composer 根本没走到认证那步——它只在明确识别到 “这是一个需要认证的 Bitbucket vcs 仓库” 时才读 bitbucket-oauth。常见断点:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
composer.json中repositories项漏掉"type": "vcs",写了"type": "package"或直接留空 -
url字段填的是网页地址(如https://bitbucket.org/org/repo)或少.git后缀(正确应为https://bitbucket.org/org/repo.git) - 包名(如
org/repo)和私有仓库内composer.json的name字段不一致(大小写敏感) - CI 环境下用了本地
composer config,但未加--global,也未通过COMPOSER_AUTH注入
App Password 怎么生成才真正可用
Bitbucket Cloud 已停用账户密码直连,App Password 是唯一被 Composer 认可的凭证形式,但它不是“生成即用”:
- 入口必须是个人设置页:
右上头像 → Personal settings → App passwords → Create app password - 权限必须勾选
Repositories: Read;Account: Read建议勾选(部分组织策略会校验) - 如果账号启用了 SSO,App Password 将被禁用——必须先在 Bitbucket 设置中关闭 SSO 或联系管理员授权
- 生成后页面只显示一次,刷新即不可见;复制后立刻存好,删掉重生成会导致旧 token 失效
最常被忽略的一点:即使所有配置都对,composer install 仍可能复用缓存的未授权响应头。遇到疑似生效但拉不到代码的情况,请先运行 composer clear-cache 再试。










