semantic-release-bot 8ccf193fd4 chore(release): 7.74.0 [skip ci]
## [7.74.0](https://github.com/kaitranntt/ccs/compare/v7.73.1...v7.74.0) (2026-04-24)

### Features

* add browser setup flow for Claude attach ([7ad8bbf](https://github.com/kaitranntt/ccs/commit/7ad8bbf0a1e03b03d85f81c1ca41c317afc0af2b))
* **browser:** add explicit runtime policy controls ([7d02f55](https://github.com/kaitranntt/ccs/commit/7d02f55f9fba3fb81c0d1f1bfeb0183809de4d54))
* **browser:** 增加 artifact 持久化与导入导出能力 ([2f167d8](https://github.com/kaitranntt/ccs/commit/2f167d8445e294cadb6be8e1190a0d33188f0b22))
* **browser:** 增加 orchestration 执行策略增强 ([101396f](https://github.com/kaitranntt/ccs/commit/101396f728dea649e1cb7e0d02e2a9ac8e66729a))
* **browser:** 增加 Phase 10A recording 生命周期 ([17a3434](https://github.com/kaitranntt/ccs/commit/17a343405629178c1a082132069102b0d8f28e9c))
* **browser:** 增加 Phase 6B mock response 能力 ([f133deb](https://github.com/kaitranntt/ccs/commit/f133deb5399367cdadd2901fbb29032d39bb5d36))
* **browser:** 增加 richer request matching 能力 ([bd073ac](https://github.com/kaitranntt/ccs/commit/bd073acf4736c337ee9d1d6ff616c27f124ca292))
* **browser:** 增加 sequence 组合块能力 ([0038b06](https://github.com/kaitranntt/ccs/commit/0038b063ac2eb98255d09e0755096d94bca70813))
* **browser:** 增加跨 page orchestration 能力 ([1833ed3](https://github.com/kaitranntt/ccs/commit/1833ed3ad612c290226208e6557eacb282bfd6b2))
* **browser:** 增强 assert_query 断言与诊断信息 ([4af9675](https://github.com/kaitranntt/ccs/commit/4af967559cd985b0829bbb197edcae1bb264bdc0))
* **browser:** 完成 browser MCP 第一阶段能力与配置打通 ([b90eae3](https://github.com/kaitranntt/ccs/commit/b90eae38928cce19c246b69f2c530947adc401f4))
* **browser:** 完成 browser MCP 第三阶段能力 ([cf2375e](https://github.com/kaitranntt/ccs/commit/cf2375e169d808964a9c80077a657712630e6d35))
* **browser:** 完成 browser MCP 第五阶段页面控制 ([ff0e708](https://github.com/kaitranntt/ccs/commit/ff0e7085b815e290d61cff39d8099e61df6a793b))
* **browser:** 完成 browser MCP 第六阶段 6A 最小拦截闭环 ([a93e0b6](https://github.com/kaitranntt/ccs/commit/a93e0b649447610bce3034c92b6e857c7f8d1e8b))
* **browser:** 完成 browser MCP 第四阶段输入能力 ([e92a2c1](https://github.com/kaitranntt/ccs/commit/e92a2c11bfedd8c4d18cf591baa15e9236aacb68))
* **browser:** 完成 Phase 10A 录制动作规范化 ([5288387](https://github.com/kaitranntt/ccs/commit/5288387151e150b37990e6098d75c957c6d7e0ac))
* **browser:** 完成 Phase 10B replay 能力 ([9d21e83](https://github.com/kaitranntt/ccs/commit/9d21e83d46da314d78189cbb483c0689b090738e))
* **browser:** 完成 Phase 10C orchestration 能力 ([7785503](https://github.com/kaitranntt/ccs/commit/77855035f4d0f6cbd37209b25b11c6cc5360b4cd))
* **browser:** 完成 Phase 8 文件传输能力 ([492ee5b](https://github.com/kaitranntt/ccs/commit/492ee5b083520ac3d8e86d1cf26a677a940e5850))
* **browser:** 完成 Phase 9 拖拽与指针动作能力 ([844b5f6](https://github.com/kaitranntt/ccs/commit/844b5f6c428e2d2db3e301c805790689c4020661))
* **cliproxy:** add --json flag to catalog command ([92d76ca](https://github.com/kaitranntt/ccs/commit/92d76cad89e00ece4bc7a91dd1f28a3b2b22ee54))
* **cliproxy:** add 'max' thinking level for Claude Opus 4.7 ([45fe7ab](https://github.com/kaitranntt/ccs/commit/45fe7ab08666addb0937cc46bc02ceb1fb91588c))
* **cliproxy:** add Claude Opus 4.7 support ([6105812](https://github.com/kaitranntt/ccs/commit/61058123e10de6ed21cadc0d1450b08cd28df6db))
* **cliproxy:** add thinking config to catalog --json and test false values ([c1d0a4d](https://github.com/kaitranntt/ccs/commit/c1d0a4d2eb15d69a42498d13b2fa9fbe763451e6))
* **cliproxy:** include model metadata in catalog --json output ([6fc2262](https://github.com/kaitranntt/ccs/commit/6fc22625ac3917d4066e6ea96df80ad5952a8f85))
* **cliproxy:** separate core and plus provider sections ([f6c86b7](https://github.com/kaitranntt/ccs/commit/f6c86b79fcbc041e6c2b586f62078739032aab40))
* **glmt:** fix sequential tool_use block handling ([a0f9176](https://github.com/kaitranntt/ccs/commit/a0f91761ed6c95b229eaca8102d18bd119a0da9b))
* **proxy:** add adaptive local port selection for OpenAI-compatible profiles ([15751e2](https://github.com/kaitranntt/ccs/commit/15751e2db5cc223111f85986add5156ee03631a8))
* **proxy:** add HEAD method support for health probe endpoints ([baa58c9](https://github.com/kaitranntt/ccs/commit/baa58c9543d6ec65548dcdad7c281ce68b8ea0eb))
* **proxy:** support profile-scoped local proxy ports ([94bf1fb](https://github.com/kaitranntt/ccs/commit/94bf1fbfe9b970eb7ce86881e958ddc4880e0d79))

### Bug Fixes

* **browser:** default browser tooling to manual opt-in ([6604357](https://github.com/kaitranntt/ccs/commit/6604357b2262e06502be49f4678063b887404ce2))
* **browser:** harden Browser MCP sessions and artifacts ([7732b20](https://github.com/kaitranntt/ccs/commit/7732b2039ab8501669465f524dc27b3037a7c5b7))
* **browser:** harden runtime policy edge cases ([039ed63](https://github.com/kaitranntt/ccs/commit/039ed63a390da270fa5bb1685239508a21509d5c))
* **browser:** preserve opt-in browser settings and env isolation ([c24033d](https://github.com/kaitranntt/ccs/commit/c24033dc6b301c27a0fe2c75d1e4327222b14313))
* **browser:** 修复 download 事件的 pageIndex 过滤 ([40c718c](https://github.com/kaitranntt/ccs/commit/40c718c584428a9dee61a15e172157935a7ad39f))
* **browser:** 对齐 browser status 输出字段 ([acdb93e](https://github.com/kaitranntt/ccs/commit/acdb93e1a8733c1c9eac803b04785a8113b1ea26))
* **browser:** 对齐 phase11e 与 upstream browser 配置体系 ([d8954e9](https://github.com/kaitranntt/ccs/commit/d8954e9453cb6d9d92f84eeb27db79e839d1e9ce))
* **ci:** address reviewer follow-up findings ([572b184](https://github.com/kaitranntt/ccs/commit/572b18422076f03d2d8ccbfce802740148a5fe36))
* **ci:** isolate bun cache per job ([08edf1e](https://github.com/kaitranntt/ccs/commit/08edf1eef4459927ef72b794df0969b33460dd81))
* **ci:** keep fast bucket stable for commonjs tests ([6d4dcc1](https://github.com/kaitranntt/ccs/commit/6d4dcc1174f4c6382233e12cfa9a211ddde367db))
* **ci:** keep release workflows on full test coverage ([b314cf3](https://github.com/kaitranntt/ccs/commit/b314cf353ed38ea16919ba4fa0029dfc5cf66c0b))
* **ci:** rely on idempotent dependency sync ([f4f33b0](https://github.com/kaitranntt/ccs/commit/f4f33b0b5f10c62d692ff81a9d444898e5db867c))
* **ci:** stop caching node_modules in GitHub Actions ([1b3ca82](https://github.com/kaitranntt/ccs/commit/1b3ca82a8408c25ab3b7911c64483fc87a3bdbb6))
* **ci:** tighten slow bucket guardrails ([5af639d](https://github.com/kaitranntt/ccs/commit/5af639ddf76ba7f84552d7b841c027c235cace1d))
* **ci:** use PAT token for dev release pushes ([06fffd3](https://github.com/kaitranntt/ccs/commit/06fffd302506aff1cc645e41a87175ba5cde5cc1))
* **ci:** validate cached ui dependencies ([02747ed](https://github.com/kaitranntt/ccs/commit/02747edb7266e3e260fd09a15ec28b78340d8c2c))
* **cliproxy:** address Presto review feedback on Opus 4.7 ([0d09199](https://github.com/kaitranntt/ccs/commit/0d09199439d335d948ac1a7e48e00cac5b18be27)), closes [atrvd/ccs#8](https://github.com/atrvd/ccs/issues/8) [#2](https://github.com/kaitranntt/ccs/issues/2) [#3](https://github.com/kaitranntt/ccs/issues/3)
* **cliproxy:** guard against undefined catalog and add issueUrl field ([02c5a5c](https://github.com/kaitranntt/ccs/commit/02c5a5c7a17d580606b4666362c6a9840a49e1d7))
* **cliproxy:** keep provider sections consistent for variants ([254abd5](https://github.com/kaitranntt/ccs/commit/254abd504f7e53a4b3b8b22d2ef20f18ae3e1b0a))
* **cliproxy:** preserve adaptive thinking on opus 4.7 paths ([71deda5](https://github.com/kaitranntt/ccs/commit/71deda553ad84defdf9dfcc8b90fb7fc1d5c6833))
* **cliproxy:** preserve explicit false values in catalog --json ([f5520de](https://github.com/kaitranntt/ccs/commit/f5520de42ad76ec9ed22bf36893e68d8fba0af4e))
* **cliproxy:** quarantine exhausted quota accounts ([478d64a](https://github.com/kaitranntt/ccs/commit/478d64a50ab7d6aef8507efe92971641ad523b09))
* **cliproxy:** route plus backend to maintained fork ([3d22bb0](https://github.com/kaitranntt/ccs/commit/3d22bb07f0d551959498c76939ba83dd4ee1d948))
* **cliproxy:** scope Opus 4.7 rollout to verified providers ([571538d](https://github.com/kaitranntt/ccs/commit/571538dc1c3cf08929705f3efde9d944ba48de59))
* **cliproxy:** use adaptive thinking for Claude Opus 4.7 ([46920db](https://github.com/kaitranntt/ccs/commit/46920dbc08a18c4c853547fe1e1ec32981e765de))
* **husky:** re-exec pre-push under bash for sh compatibility ([dea704c](https://github.com/kaitranntt/ccs/commit/dea704c57dea8ba9c9538ddea6638fbd4e5c7660))
* **image-analysis:** clear runtime env on native-read fallback ([4cf826e](https://github.com/kaitranntt/ccs/commit/4cf826efa24dff5b173881452219e92a4f341381))
* **image-analysis:** clear runtime env on native-read fallback ([63082d4](https://github.com/kaitranntt/ccs/commit/63082d4aed903d83e09dc3ac85f630367fe7a32b))
* keep browser setup config-only ([f36c4a6](https://github.com/kaitranntt/ccs/commit/f36c4a6e32c7daf92054707dc4f64eff462aafe5))
* preserve codex effort suffixes in dashboard profiles ([e2ca197](https://github.com/kaitranntt/ccs/commit/e2ca19739784d7ad864928af32abed314a48899c))
* preserve supplemental codex effort variants ([3a63cc0](https://github.com/kaitranntt/ccs/commit/3a63cc04312b127cbaa31a1a2c2f58c1c3047515))
* **proxy:** avoid undefined status port output ([54c3b2d](https://github.com/kaitranntt/ccs/commit/54c3b2d40b08f699715905b151d085d37c5af789))
* **proxy:** clarify shared port fallback and legacy 3456 handling ([d559191](https://github.com/kaitranntt/ccs/commit/d5591913efaada396e185fd522b9047476f2840b))
* **proxy:** disambiguate activate without profile ([630a493](https://github.com/kaitranntt/ccs/commit/630a493ccad8e3acac3559947eb5a8b362b7f446))
* **proxy:** handle end-of-options parsing ([2a80f7b](https://github.com/kaitranntt/ccs/commit/2a80f7b1c193b839bcf4af691ae5b84ac6f44fd5))
* **proxy:** handle legacy stop and preferred ports ([391bddd](https://github.com/kaitranntt/ccs/commit/391bdddc2232836f9e49dcfa710c7ad1ffac19b9))
* **proxy:** harden stale daemon ownership checks ([1cfed73](https://github.com/kaitranntt/ccs/commit/1cfed73ca5bb8d1e8def81aeb63ebe36a074badd))
* **proxy:** honor subcommand help flags ([dfd070c](https://github.com/kaitranntt/ccs/commit/dfd070c9c6074424e1ce911c7a004547ce66d05f))
* **proxy:** ignore legacy singleton session file ([f345cf4](https://github.com/kaitranntt/ccs/commit/f345cf441e474e1fecbef95fbff8c95351079721))
* **proxy:** parse flag options before profile args ([6928d8b](https://github.com/kaitranntt/ccs/commit/6928d8bb65cb51ab6b1e1b7095989931c040da80))
* **proxy:** persist daemon state after startup ([c0c1198](https://github.com/kaitranntt/ccs/commit/c0c119867abfce30a9ddb6b8b9a4365809c897a7))
* **proxy:** preserve legacy state and exact ports ([24c2484](https://github.com/kaitranntt/ccs/commit/24c24847f7c981cc0654c2cd5a6310edca4609fe))
* **proxy:** preserve running daemons on restart failure ([db32d15](https://github.com/kaitranntt/ccs/commit/db32d15d86316d07f1325443e218a1a642135219))
* **proxy:** retain explicit profile names in status ([afcb1ab](https://github.com/kaitranntt/ccs/commit/afcb1abf9e507155f0978898ac5b9d565ec3af88))
* **proxy:** retry candidate ports on bind conflict ([8ad2763](https://github.com/kaitranntt/ccs/commit/8ad2763942d92ab665d7a2c742ca94ec969eac32))
* **proxy:** retry raced dynamic port binds ([7cf5553](https://github.com/kaitranntt/ccs/commit/7cf555356aa1d8b42c7860cc924381d4cc81aecb))
* **proxy:** update tests for tool_result+text and disconnect handler changes ([b2a4579](https://github.com/kaitranntt/ccs/commit/b2a45790989a0a1c72fe1f8b72aff7f3f499b459))
* route codex remote https through local proxy chain ([7a9e67e](https://github.com/kaitranntt/ccs/commit/7a9e67e6dc7de70709b6baaa3a9a1158b27fbd33))
* **runtime:** isolate nested Anthropic env across delegation paths ([f78c30a](https://github.com/kaitranntt/ccs/commit/f78c30ac50cb2351a77b840c483ecb94c6a9ab6d))
* **runtime:** strip inherited Anthropic routing env selectively ([9ae85b8](https://github.com/kaitranntt/ccs/commit/9ae85b82c12c45e73f0819ca33ad5ffd2f3ac323))
* **runtime:** strip reintroduced Anthropic routing env ([1fd2fb8](https://github.com/kaitranntt/ccs/commit/1fd2fb83fbf08ef9ef9a03fb69d9c6cea5f8eb37))
* **settings-profile:** pass selective Anthropic env stripping to Claude launches ([5881a50](https://github.com/kaitranntt/ccs/commit/5881a505d9b824aa9c7f8a9fb06d7122a94325d5))
* **settings-profile:** preserve non-routing env for Claude launches ([2191f0a](https://github.com/kaitranntt/ccs/commit/2191f0a6c7ee9121bd28da6b56d58d9f50e119cc))
* **test:** correct expected error message text ([889d3d8](https://github.com/kaitranntt/ccs/commit/889d3d89e9e1d93a55356def036806c2982506d9))
* **test:** stabilize proxy integration server ports ([e6ac91b](https://github.com/kaitranntt/ccs/commit/e6ac91b9c716d21ba2a0493b4023efaa5e126975))
* **test:** stabilize suite isolation for dev pushes ([89a32c2](https://github.com/kaitranntt/ccs/commit/89a32c2ecd269d0d4b1da4455bac2fa942a5585d))
* **transformers:** preserve tool ordering across proxy streams ([399f403](https://github.com/kaitranntt/ccs/commit/399f403322ad8be4ce23a286872fd19c76efa0f4))
* **ui:** surface the max thinking level in settings and help ([b3bc176](https://github.com/kaitranntt/ccs/commit/b3bc17639ca632cf456f3c0e983c1bc24e9546bc))

### Hotfixes

* **cliproxy:** fallback from deleted CLIProxyAPIPlus to original backend ([b8b48a9](https://github.com/kaitranntt/ccs/commit/b8b48a99ba8d9e17398886a005c7c64f011ad6f3)), closes [#1062](https://github.com/kaitranntt/ccs/issues/1062)
* close cliproxy plus fallback gaps ([dd90ea7](https://github.com/kaitranntt/ccs/commit/dd90ea7e2fa4dcac6227009caacc1f76711c79b5))
* preserve plus fallback state and guard variant updates ([3e7ce17](https://github.com/kaitranntt/ccs/commit/3e7ce1743b491a7698b210df05bdc815cc02191b))

### Documentation

* **browser:** 增补 11A 断言与诊断能力说明 ([26baa01](https://github.com/kaitranntt/ccs/commit/26baa019e3c54a0cad6cafab7a6002e04e6b0dbe))
* **browser:** 增补 11B sequence 能力说明 ([78f3879](https://github.com/kaitranntt/ccs/commit/78f3879e19adfc90464fb2aca00a218b5efe55d5))
* **browser:** 增补 11C 执行策略能力说明 ([d0e6087](https://github.com/kaitranntt/ccs/commit/d0e6087126fdd9b5a0915229a2c6fd5395e9495c))
* **browser:** 增补 11D 持久化与导入导出说明 ([3c791a4](https://github.com/kaitranntt/ccs/commit/3c791a467fba9605da341b10bacda460564d9759))
* **browser:** 增补 11E 跨 page orchestration 说明 ([f6ef59e](https://github.com/kaitranntt/ccs/commit/f6ef59ef96fdce0571e1b6dd0580a5499615fd52))
* **browser:** 增补 browser MCP 第七阶段设计 ([a5ef77a](https://github.com/kaitranntt/ccs/commit/a5ef77a3d8928440d927c84d207477993cae3d6a))
* **browser:** 增补 browser MCP 第八阶段设计 ([26aa8f4](https://github.com/kaitranntt/ccs/commit/26aa8f4c20f4b60390387b40625ee5e5fa130bf6))
* **browser:** 增补 browser MCP 第六阶段设计 ([e0b58ee](https://github.com/kaitranntt/ccs/commit/e0b58ee1621df9aa7fddc9b0fcdaef12ee865a0c))
* **browser:** 增补 Phase 10A recording 能力说明 ([b477a75](https://github.com/kaitranntt/ccs/commit/b477a75d0e110d4611babefcc34aee4a77be5aeb))
* **browser:** 增补 Phase 10B replay 能力说明 ([2099145](https://github.com/kaitranntt/ccs/commit/2099145e2cf0dd530cb144fb296c8e7e66e848c4))
* **browser:** 增补 Phase 10C orchestration 能力说明 ([c708bde](https://github.com/kaitranntt/ccs/commit/c708bde817bc11ab87065e514078b2d2f725db9b))
* **cliproxy:** clarify catalog --json output format in JSDoc ([f090c32](https://github.com/kaitranntt/ccs/commit/f090c32c2f23065dbc1633ab9689124cffe4411d))
* **cliproxy:** document v18 config bump for Opus 4.7 ([faca421](https://github.com/kaitranntt/ccs/commit/faca421705ba7279e3c2ed3a74afca51b88d770c)), closes [atrvd/ccs#8](https://github.com/atrvd/ccs/issues/8) [#1](https://github.com/kaitranntt/ccs/issues/1)
* **contrib:** align local gate shortcuts ([ddfbcb6](https://github.com/kaitranntt/ccs/commit/ddfbcb63f44eb6f379765bf5e44f42189d9012f3))
* **contrib:** clarify CI lanes and parity gates ([c9eaae1](https://github.com/kaitranntt/ccs/commit/c9eaae17c184a91addc2df85733db3d6339bb720))
* **proxy:** document multi-profile proxy lifecycle ([8b27110](https://github.com/kaitranntt/ccs/commit/8b2711062eb2076858d414f29af01d046642fa35))
* remove maintainer-only runner info from contributor docs ([a3f5aff](https://github.com/kaitranntt/ccs/commit/a3f5aff45d06c3c200e568d92217a56525ec3dbf))
* **test-bucket:** document slowTests addition criteria ([eab2b48](https://github.com/kaitranntt/ccs/commit/eab2b48f2c9a536453411d9bde2c8c5867f57162))

### Performance Improvements

* **test-bucket:** only serialize slow bucket, parallelize fast ([6b5c74a](https://github.com/kaitranntt/ccs/commit/6b5c74aa4baaac2b43da73250e9e8e30f68aafa5))

### Tests

* align browser launch assertions with setup guidance ([341e612](https://github.com/kaitranntt/ccs/commit/341e612e48df4f9663cd3bd2e0ecd0403f00327c))
* **browser:** split Browser MCP hook coverage by domain ([50fa27f](https://github.com/kaitranntt/ccs/commit/50fa27f0a55b8ff8eeccbe5b19c4d04aa8724605))
* **browser:** 扩展 fulfill interception harness ([23eccb2](https://github.com/kaitranntt/ccs/commit/23eccb24f3efa285f6eb3894c0d58a3b0f15c987))
* **browser:** 扩展 network interception harness ([68b5683](https://github.com/kaitranntt/ccs/commit/68b56839db7914887db6a535e5b0ebb9c2beb8a4))
* **browser:** 扩展 richer matching interception harness ([ef06564](https://github.com/kaitranntt/ccs/commit/ef06564b6063e3837706fd8eae4e6d3f315f7f7d))
* **browser:** 添加 Phase 6A 失败测试 ([491e9db](https://github.com/kaitranntt/ccs/commit/491e9db51ebef504ac8580b0002df31888b9ce8d))
* **browser:** 添加 Phase 6B fulfill 失败测试 ([1fbb53c](https://github.com/kaitranntt/ccs/commit/1fbb53c4b1355d91b0031f6e5afdec5ec184c14b))
* **browser:** 添加 Phase 7 richer matching 失败测试 ([cb415b4](https://github.com/kaitranntt/ccs/commit/cb415b41275bdade0570ef6c46fcb10004b6485b))
* **browser:** 补充 Phase 6B 边界覆盖并同步文档 ([447b5c8](https://github.com/kaitranntt/ccs/commit/447b5c8bc1b311530bf533fa836218ae40f991e0))
* **browser:** 补充 Phase 7 回归覆盖并同步文档 ([126c30a](https://github.com/kaitranntt/ccs/commit/126c30ac1af20b3ac6088b17e773ab5a43711f16))
* **ci:** cover pr workflow coverage ([cf5fc96](https://github.com/kaitranntt/ccs/commit/cf5fc96b7d25b55100045f3b3595aa2eb982445b))
* **ci:** cover push quality workflow ([b9f5783](https://github.com/kaitranntt/ccs/commit/b9f5783facddb2decb702e378e558c5faac2fc80))
* **ci:** keep split browser MCP suites in slow bucket ([5081231](https://github.com/kaitranntt/ccs/commit/508123166774ecbcb76101bbd4aa6209f693b607))
* **cliproxy:** add catalog --json tests and clarify flag priority ([c1d462e](https://github.com/kaitranntt/ccs/commit/c1d462ea41d4086cb6facb808131a51cb85730ff))
* **cliproxy:** cover Claude Opus 4.7 in Claude provider catalog ([7492688](https://github.com/kaitranntt/ccs/commit/7492688effa2ab2dd12094dc4b6d9f7f2e8d909b)), closes [atrvd/ccs#8](https://github.com/atrvd/ccs/issues/8) [#4](https://github.com/kaitranntt/ccs/issues/4)
* **model-pricing:** add cache pricing coverage for Opus 4.7 ([de0f8b3](https://github.com/kaitranntt/ccs/commit/de0f8b32642c2eda34efc8d06317f91ee00957ba)), closes [atrvd/ccs#8](https://github.com/atrvd/ccs/issues/8) [#6](https://github.com/kaitranntt/ccs/issues/6)
* **model-pricing:** align Opus 4.7 cache coverage ([21ec661](https://github.com/kaitranntt/ccs/commit/21ec661106b649c0ff626501a71a461478a63edd))
* **proxy:** cover multi-profile daemon ports ([8942be3](https://github.com/kaitranntt/ccs/commit/8942be3afcff581476aa82161ec7ddce0aaea35c))
* **proxy:** gate proxy e2e coverage in checks ([69da284](https://github.com/kaitranntt/ccs/commit/69da284104dbd5ab0c367ac08fcafeb1cd079770))

### CI

* add fast test budget warning ([4c67750](https://github.com/kaitranntt/ccs/commit/4c677507d0e568418a79c6c6893f62e2fe560049))
* preserve fast test budget summary on failure ([aa4a05e](https://github.com/kaitranntt/ccs/commit/aa4a05e85922c787cada4dc1111469a1bcfdcfd6))
2026-04-24 04:24:34 +00:00
2026-04-23 23:49:18 -04:00
2026-04-23 23:49:18 -04:00
2026-04-24 04:24:34 +00:00
2026-04-24 04:24:34 +00:00

CCS - Claude Code Switch

CCS Logo

The multi-provider profile and runtime manager for Claude Code and compatible CLIs

Run Claude, Codex, Droid-routed profiles, GLM, local models, and Anthropic-compatible APIs without config thrash.

License npm PoweredBy

Website | Documentation | Product Tour | CLI Reference

Why CCS

CCS gives you one stable command surface while letting you switch between:

  • multiple runtimes such as Claude Code, Factory Droid, and Codex CLI
  • multiple Claude subscriptions and isolated account contexts
  • OAuth providers like Codex, Copilot, Kiro, Claude, Qwen, Kimi, and more
  • API and local-model profiles like GLM, Kimi, OpenRouter, Ollama, llama.cpp, Novita, and Alibaba Coding Plan

The goal is simple: stop rewriting config files, stop breaking active sessions, and move between providers in seconds.

Quick Start

npm install -g @kaitranntt/ccs
ccs config

Then launch whatever runtime fits the task:

ccs
ccs codex
ccs --target droid glm
ccs glm
ccs ollama

OpenAI-Compatible Routing

CCS can now bridge Claude Code into OpenAI-compatible providers through a local Anthropic-compatible proxy instead of requiring a native Anthropic upstream.

ccs api create --preset hf
ccs hf

Need to manage the proxy manually?

ccs proxy start hf
eval "$(ccs proxy activate)"

The proxy also supports request-time profile:model selectors, scenario-based model routing through proxy.routing, and explicit activation helpers such as ccs proxy activate --fish.

Guide: OpenAI-Compatible Provider Routing

claude-code-router is an excellent standalone tool for routing Claude Code requests to OpenAI-compatible providers. CCS's local proxy and SSE transformation work was directly informed by CCR's transformer architecture.

Use CCR when you want a standalone router without CCS profile management. Use CCS when you want the routing flow integrated with CCS profiles, runtime bridges, and the existing ccs command surface.

Need the full setup path instead of the short version?

Need Start here
Install and verify CCS /getting-started/installation
First successful session /getting-started/first-session
Visual walkthrough /getting-started/product-tour
Provider selection /providers/concepts/overview
Full command reference /reference/cli-commands
Troubleshooting /reference/troubleshooting

See CCS In Action

Usage Analytics

Analytics Dashboard

Track usage, costs, and session patterns across profiles. Deep dive: Dashboard Analytics.

Live Auth And Health Monitoring

Live Auth Monitor

See auth state, account health, and provider readiness without dropping into raw config. Deep dive: Live Auth Monitor.

OAuth Provider Control Center

CLIProxy API

Manage OAuth-backed providers, quota visibility, and proxy-wide routing from one place. CCS now surfaces round-robin vs fill-first natively in both CLI and dashboard flows instead of hiding that choice inside raw upstream controls. The original CLIProxyAPI backend remains the default; the community-maintained CLIProxyAPIPlus fork is opt-in for plus-only providers. Deep dive: CLIProxy API.

Managed Tooling And Fallbacks

WebSearch Fallback

CCS can provision first-class local tools like WebSearch and image analysis for third-party launches instead of leaving you to wire them by hand. Browser automation now has a first-class setup path as well. Deep dive: WebSearch | Browser Automation.

Docs Matrix

The README stays short on purpose. The docs site owns the detailed guides and reference material.

If you want to... Read this
Understand what CCS is and how the pieces fit together Introduction
Install CCS cleanly on a new machine Installation
Go from install to a successful first run Your First CCS Session
See the dashboard and workflow surfaces before setup Product Tour
Compare OAuth providers, Claude accounts, and API profiles Provider Overview
Learn the dashboard structure and feature pages Dashboard Overview
Configure profiles, paths, and environment variables Configuration
Understand browser attach vs Codex browser tooling Browser Automation
Keep OpenCode aligned with your live CCS setup OpenCode Sync Plugin
Browse every command and flag CLI Commands
Recover from install, auth, or provider failures Troubleshooting
Understand storage, config, and architecture details Reference

Example Workflow

# Design with default Claude
ccs "design the auth flow"

# Implement with a different provider
ccs codex "implement the user service"

# Use a cheaper API profile for routine work
ccs glm "clean up tests and docs"

# Run a local model when you need privacy or offline access
ccs ollama "summarize these logs"

Community Projects

Project Author Description
opencode-ccs-sync @JasonLandbridge Auto-sync CCS providers into OpenCode

Contribute And Report Safely

  • Contributing guide: CONTRIBUTING.md
  • Daily local gate: bun run format && bun run lint:fix && bun run validate (validate is the fast path only)
  • Before review or merge confidence: bun run validate:ci-parity
  • If PR checks stay queued for more than 10 minutes, assume the self-hosted runner is offline and notify a maintainer instead of retrying blindly
  • Starter work: good first issue, help wanted
  • Questions: open a question issue
  • Security reports: SECURITY.md and the private advisory form

Star History

Star History Chart

S
Description
Switch between Claude accounts, Gemini, Copilot, OpenRouter (300+ models) via CLIProxyAPI OAuth proxy. Visual dashboard, remote proxy support, WebSearch fallback. Zero-config to production-ready.
Readme MIT
37 MiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 82.1%
HTML 7.4%
JavaScript 6.9%
Swift 1.9%
Shell 1%
Other 0.6%