## [7.44.0](https://github.com/kaitranntt/ccs/compare/v7.43.0...v7.44.0) (2026-02-14) ### Features * **cliproxy:** add CLI edit command for composite variants ([43e73f3](https://github.com/kaitranntt/ccs/commit/43e73f335f85f051b7294b0d9f4bdae405780a26)) * **cliproxy:** add composite variant CLI wizard ([4926c20](https://github.com/kaitranntt/ccs/commit/4926c200f2601655e0a93f73c9dd8d03c44e12da)), closes [#506](https://github.com/kaitranntt/ccs/issues/506) * **cliproxy:** add composite variant runtime execution ([44b30b8](https://github.com/kaitranntt/ccs/commit/44b30b875328bf795dfc5783948f81da018c2f2e)), closes [#506](https://github.com/kaitranntt/ccs/issues/506) * **cliproxy:** add composite variant type definitions ([3d207fa](https://github.com/kaitranntt/ccs/commit/3d207faac5ca3389572b88eb0881b2dca040c6fb)), closes [#506](https://github.com/kaitranntt/ccs/issues/506) * **cliproxy:** add dashboard CRUD for composite variants ([1ebd9f4](https://github.com/kaitranntt/ccs/commit/1ebd9f43d6e5fe76f50be31458955b1a53312b25)) * **cliproxy:** add explicit start and restart commands ([8395364](https://github.com/kaitranntt/ccs/commit/83953649704c5957a2522e3b8cf041fd2725510e)) * **cliproxy:** add per-tier thinking config for composite variants ([ed22c1a](https://github.com/kaitranntt/ccs/commit/ed22c1aa1ec9d3c3bf6e161b31326e603e299620)) * **cliproxy:** add provider error detection for composite fallback ([478e9e8](https://github.com/kaitranntt/ccs/commit/478e9e8f7342300ec5368c606bc7619ed497c481)) * **cliproxy:** clarify codex effort mapping and preset UX ([945db1d](https://github.com/kaitranntt/ccs/commit/945db1d6909e546fef988f7823d60e03adcffd44)) * **cliproxy:** extend composite schema with fallback and thinking fields ([20d6079](https://github.com/kaitranntt/ccs/commit/20d60791ffc5c805a2d2d88fc95c5e734dbcbc67)), closes [#506](https://github.com/kaitranntt/ccs/issues/506) * **cliproxy:** implement composite variant CRUD and settings ([c58fdc9](https://github.com/kaitranntt/ccs/commit/c58fdc931e40026322419d6353535e95308e9a8e)), closes [#506](https://github.com/kaitranntt/ccs/issues/506) * **cliproxy:** wire composite variant into main execution flow ([07bef9f](https://github.com/kaitranntt/ccs/commit/07bef9f50eeb3a8fe4beace38de04784f6bdda1e)), closes [#506](https://github.com/kaitranntt/ccs/issues/506) * **codex:** add gpt-5.3 preset defaults ([7fddb63](https://github.com/kaitranntt/ccs/commit/7fddb63ab9ffb826eee514e791ac923067938a04)) * **codex:** keep gpt-5.2 catalog entry ([d6aa1d9](https://github.com/kaitranntt/ccs/commit/d6aa1d90a6d7722829f5cdb0d9208a22fc4ae7e3)) * **cursor:** add auth module with SQLite auto-detect and types ([56270d9](https://github.com/kaitranntt/ccs/commit/56270d99f3511058bb71390df4c0b85f4a0e54e0)), closes [#519](https://github.com/kaitranntt/ccs/issues/519) [#517](https://github.com/kaitranntt/ccs/issues/517) * **cursor:** add config integration and dashboard routes ([93dafa0](https://github.com/kaitranntt/ccs/commit/93dafa04d53367653aadb6d32c59d85a0502865e)) * **cursor:** add core protobuf encoder/decoder and executor ([9daf943](https://github.com/kaitranntt/ccs/commit/9daf9430bb76f175e34a9aa05c6060b4a959312e)) * **cursor:** add daemon lifecycle, models catalog, and CLI commands ([aaa31c6](https://github.com/kaitranntt/ccs/commit/aaa31c64270d0e718ad82d584c8c76692e39dbf4)), closes [#520](https://github.com/kaitranntt/ccs/issues/520) [#521](https://github.com/kaitranntt/ccs/issues/521) [#522](https://github.com/kaitranntt/ccs/issues/522) * **cursor:** complete daemon wiring and add dedicated dashboard page ([be9d7cf](https://github.com/kaitranntt/ccs/commit/be9d7cf73e10ede766affe932881969788eadfb7)) * **cursor:** namespace FIELD constants and implement true streaming SSE ([#531](https://github.com/kaitranntt/ccs/issues/531), [#535](https://github.com/kaitranntt/ccs/issues/535)) ([4e5b502](https://github.com/kaitranntt/ccs/commit/4e5b502fc9b2b8e576105dddb5c9d068db5b73d2)) ### Bug Fixes * **analytics:** stabilize responsive row alignment ([0cc1f11](https://github.com/kaitranntt/ccs/commit/0cc1f111f7032fa6685ed59161b43d60a9f39f67)) * **cli:** add kiro auth-method flag wiring and help ([e425f47](https://github.com/kaitranntt/ccs/commit/e425f477a44fa030a8dc5a6c28bed14d9bdfd762)), closes [#552](https://github.com/kaitranntt/ccs/issues/552) [#233](https://github.com/kaitranntt/ccs/issues/233) * **cliproxy:** add circular fallback and empty model validation in API ([ef77607](https://github.com/kaitranntt/ccs/commit/ef77607c41cbf7e7529581071d03bea158bad44f)) * **cliproxy:** add defensive null checks for composite tier config ([0c7dc39](https://github.com/kaitranntt/ccs/commit/0c7dc398f77806a1aa47ed73f0828f36ad88d948)) * **cliproxy:** add session check on delete and atomic settings writes ([7486897](https://github.com/kaitranntt/ccs/commit/74868972ddbc9c4dcb689ea6a3e27a52893f6935)) * **cliproxy:** address 3 code review issues in composite variants ([399d7e1](https://github.com/kaitranntt/ccs/commit/399d7e163a30568ae6ec8070c517c54225eb1307)) * **cliproxy:** address 3 functional regressions in composite variants ([61f46e7](https://github.com/kaitranntt/ccs/commit/61f46e738d1935f9db5afb030e34daba2e95ac59)) * **cliproxy:** address 4 functional regressions in composite variants ([27d22e8](https://github.com/kaitranntt/ccs/commit/27d22e836ffc83c62eefbeeb2ef29aefcb36c834)) * **cliproxy:** address code review feedback (attempt 1/5) ([854b198](https://github.com/kaitranntt/ccs/commit/854b198b64c0feb5cfe6f7ecdf87980d18c0fda6)) * **cliproxy:** address code review feedback (attempt 2/5) ([ac574e0](https://github.com/kaitranntt/ccs/commit/ac574e0bafaf5a7124857e7f38fe3c44f5d67a8a)) * **cliproxy:** address code review feedback (attempt 3/5) ([6cfbdd6](https://github.com/kaitranntt/ccs/commit/6cfbdd649b6b2e1d5038c42e69f74e2c744d2bb4)) * **cliproxy:** address code review feedback (attempt 4/5) ([4c002ca](https://github.com/kaitranntt/ccs/commit/4c002caee1d64b2b90967a67a18db8f097bbac80)) * **cliproxy:** address lifecycle port and thinking regressions ([f02e7dc](https://github.com/kaitranntt/ccs/commit/f02e7dc5c62084fc7fb73e08d3ca667210d17317)) * **cliproxy:** align kiro auth methods with upstream contracts ([fd46ad0](https://github.com/kaitranntt/ccs/commit/fd46ad022aae1a4d2fe6dbb8304f691465860214)), closes [#552](https://github.com/kaitranntt/ccs/issues/552) [#233](https://github.com/kaitranntt/ccs/issues/233) * **cliproxy:** fix edit dialog empty model and composite guidance ([8e6b67b](https://github.com/kaitranntt/ccs/commit/8e6b67bf99204f4fe187ba59e739491d4a2ab193)) * **cliproxy:** fix thinking off regression and composite error handling ([e914fe9](https://github.com/kaitranntt/ccs/commit/e914fe977895c7d036e6cd81f48d833ac29bb9f7)) * **cliproxy:** harden composite validation and runtime safeguards ([1a23f91](https://github.com/kaitranntt/ccs/commit/1a23f912a4629cb73d83351f6c1f4acf18f7a214)) * **cliproxy:** harden composite variant routing and validation ([0a8adb2](https://github.com/kaitranntt/ccs/commit/0a8adb22fcdffc993b06ed577217ccb8e55253c9)) * **cliproxy:** harden kiro device-code auth flow consistency ([826a42d](https://github.com/kaitranntt/ccs/commit/826a42d8d6c4877431474c27e14f0f1d4ec092d7)) * **cliproxy:** improve multi-provider auth with continue-on-error pattern ([6ff17d8](https://github.com/kaitranntt/ccs/commit/6ff17d848091e1087ce2631ef2363e628346a8a2)) * **cliproxy:** keep daemon running after parent exit ([3136f24](https://github.com/kaitranntt/ccs/commit/3136f24b9b4a879199e272cf8d1e52c919270f10)) * **cliproxy:** keep variant updates atomic and persisted ([7bb9ceb](https://github.com/kaitranntt/ccs/commit/7bb9ceb4aff0d806ec19b3e97486a96d667834d2)) * **cliproxy:** mark Kiro as device_code flow for dashboard auth ([6c20839](https://github.com/kaitranntt/ccs/commit/6c2083949f887a9f1a1d37bf8cc2a27c3bd650d7)), closes [#552](https://github.com/kaitranntt/ccs/issues/552) * **cliproxy:** resolve merge-duplicate lifecycle handlers ([9268c05](https://github.com/kaitranntt/ccs/commit/9268c05ee526e9c12b7ad33e180d3b8818443e62)) * **cliproxy:** restore POST tier validation and guard null payloads ([a99180f](https://github.com/kaitranntt/ccs/commit/a99180fa22c83db51b3ff2f7b4dbadab0f79fbbc)) * **cliproxy:** strip thinking suffix in detectFailedTier matching ([efd3f21](https://github.com/kaitranntt/ccs/commit/efd3f21e29dd17c287f4e569670d80c9d0f85d5a)) * **cliproxy:** unify codex reasoning flags and thinking flow ([f9df3cf](https://github.com/kaitranntt/ccs/commit/f9df3cfa7ad5fe3668780b714edd33f17529083f)) * **codex:** align quota display to 5h and weekly windows ([f8af5a8](https://github.com/kaitranntt/ccs/commit/f8af5a8c3cb9e2c0de09f0a1ffde942c642cdca0)) * **codex:** infer code review cadence from reset window ([1d2ee82](https://github.com/kaitranntt/ccs/commit/1d2ee827fe38204d8d4ceb376c604abcff130836)) * **codex:** preserve sonnet high alias on variant model updates ([3410c52](https://github.com/kaitranntt/ccs/commit/3410c52f7ed0af34428e0265b1ff510e3f3dafdf)) * **codex:** preserve xhigh default effort for gpt-5.3 ([164d195](https://github.com/kaitranntt/ccs/commit/164d1953679392772506defc6024cf514fbbb188)) * **codex:** reduce quota timeout flakes in dashboard ([b3d9dce](https://github.com/kaitranntt/ccs/commit/b3d9dce6e1e7b631d24bb98111a14b239074db2b)) * **codex:** stabilize code review window labeling ([40512fe](https://github.com/kaitranntt/ccs/commit/40512fe3388e0e517838926438c8ae4559cc09d3)) * **codex:** type cast provider in model update path ([41d9978](https://github.com/kaitranntt/ccs/commit/41d99788da96b7f59144d391d672d070e34ace00)) * **commands:** await async command validation ([b98335c](https://github.com/kaitranntt/ccs/commit/b98335c1620bda79a3e27e5392f5e77f6bdd7f03)) * **config:** serialize cursor section in generateYamlWithComments ([4b7de69](https://github.com/kaitranntt/ccs/commit/4b7de69d9bd330c07d834e610ca36e657a7ab2eb)) * **cursor:** add enabled field to tests, simplify cursor routing ([f9834c8](https://github.com/kaitranntt/ccs/commit/f9834c81c947315ebe2527135e6df4bdc4da37c7)) * **cursor:** add input validation on dashboard settings routes ([1bebf16](https://github.com/kaitranntt/ccs/commit/1bebf163575dc3f0a8a936d630714f48292655e4)) * **cursor:** add resolve guard, port validation, and daemon tests ([7d4e6d6](https://github.com/kaitranntt/ccs/commit/7d4e6d6b65d467cf182710805b4ee15f44a4f5f0)) * **cursor:** add response body handling and size limit ([36f0308](https://github.com/kaitranntt/ccs/commit/36f0308a72141e0481c9044a4e49b35b3065cf73)) * **cursor:** add subcommand parity comment and raw settings TODO ([4ca4a9d](https://github.com/kaitranntt/ccs/commit/4ca4a9d2ab55eb0b339ac62e7a11d517ada1aff3)) * **cursor:** address CI gate and review regressions ([0e55db8](https://github.com/kaitranntt/ccs/commit/0e55db88a5b92ecde8528ee8bf396ce411c93296)) * **cursor:** address code review edge cases in protobuf and executor ([cc5a903](https://github.com/kaitranntt/ccs/commit/cc5a9039e40d952bd769b8b2dce7df9ecfd0cfa8)) * **cursor:** address code review feedback (attempt 1/5) ([31f5741](https://github.com/kaitranntt/ccs/commit/31f574118d6c1f293dd8dc59c311079bde9b0bd1)) * **cursor:** address code review feedback on auth module ([7e4f080](https://github.com/kaitranntt/ccs/commit/7e4f08004c00771ee624a09c045f920a5e105358)) * **cursor:** address fourth-round review feedback for protobuf module ([c5e8241](https://github.com/kaitranntt/ccs/commit/c5e82413932f83958bb56f37aee5dc82ab5207d3)) * **cursor:** address PR [#527](https://github.com/kaitranntt/ccs/issues/527) review feedback ([9f0ea25](https://github.com/kaitranntt/ccs/commit/9f0ea25448a8e4ca3019052812452885a4058190)) * **cursor:** address PR [#528](https://github.com/kaitranntt/ccs/issues/528) review feedback ([d58e988](https://github.com/kaitranntt/ccs/commit/d58e98815b5ccf0aa62f9fc929f88d43b4905d8e)) * **cursor:** address remaining LOW review items in protobuf module ([f3d532a](https://github.com/kaitranntt/ccs/commit/f3d532afd971e998ee7f72fcfc8a2940ff735ff4)) * **cursor:** address remaining PR [#527](https://github.com/kaitranntt/ccs/issues/527) review feedback ([afb5e74](https://github.com/kaitranntt/ccs/commit/afb5e746b3c11951147c381b298bc562a078685c)) * **cursor:** address remaining PR [#528](https://github.com/kaitranntt/ccs/issues/528) review feedback ([b8aaa58](https://github.com/kaitranntt/ccs/commit/b8aaa58d6ebf2b715fd9f53cf42ea363bbb55042)) * **cursor:** address remaining review items in auth module ([b412ba2](https://github.com/kaitranntt/ccs/commit/b412ba2a9eb6e92630de3c4b98bb95a1375927a0)), closes [#526](https://github.com/kaitranntt/ccs/issues/526) * **cursor:** address second-round review feedback for auth module ([84a256d](https://github.com/kaitranntt/ccs/commit/84a256d0ac8ac2c3be6c4ffdbd422eda47f3abcc)) * **cursor:** address second-round review feedback for protobuf module ([e177a4b](https://github.com/kaitranntt/ccs/commit/e177a4b09796cfc48a4932428449809d8ab68015)), closes [#531](https://github.com/kaitranntt/ccs/issues/531) [#531](https://github.com/kaitranntt/ccs/issues/531) * **cursor:** address third-round review feedback for auth module ([a8a68c9](https://github.com/kaitranntt/ccs/commit/a8a68c95992614e7c7ea1e3f65c85e29713ed746)) * **cursor:** address third-round review feedback for protobuf module ([66a93ee](https://github.com/kaitranntt/ccs/commit/66a93ee46f26a226294cdfd25abeac78af614aff)), closes [#535](https://github.com/kaitranntt/ccs/issues/535) * **cursor:** align daemon routes, add enabled field, handle bare command ([6af7186](https://github.com/kaitranntt/ccs/commit/6af718626ff9db1e58a132972d08abbc3aece5bd)) * **cursor:** clean up PID file on startDaemon failure and improve daemon robustness ([cda037e](https://github.com/kaitranntt/ccs/commit/cda037e7e5a9a77bb6bb9768e3d601008d102b70)) * **cursor:** clean up settings validation and route consistency ([1e4cae3](https://github.com/kaitranntt/ccs/commit/1e4cae34900b307aaa7d9ddb20e624bbbf17bfb4)) * **cursor:** close ReadableStream controller on abort to prevent consumer hangs ([36a67c4](https://github.com/kaitranntt/ccs/commit/36a67c48377a0fbd325d2ed9a267de5c5357b52f)) * **cursor:** export missing symbols, eliminate subcommand sync risk, improve tests ([9342387](https://github.com/kaitranntt/ccs/commit/934238740e124f6b89d04f571fe201153dbf85af)) * **cursor:** fix router fall-through, add daemon marker, use random test port ([bfc9361](https://github.com/kaitranntt/ccs/commit/bfc9361701376b0a2d5541f2c8e48e95e2637539)) * **cursor:** fix test isolation and daemon exit handling ([fe97d72](https://github.com/kaitranntt/ccs/commit/fe97d720d41f83a35acf90307ef4471fb02a4cc6)) * **cursor:** guard raw-settings save race and enforce daemon preconditions ([9a76f86](https://github.com/kaitranntt/ccs/commit/9a76f866b09bfb7b864da236011658046f24f150)) * **cursor:** harden auth security and add token expiry warning ([aeb5802](https://github.com/kaitranntt/ccs/commit/aeb580281fc4b9f0d585a99e95730e65bd6fae6f)) * **cursor:** harden stopDaemon PID validation, tighten regex, add lifecycle test ([760a5c3](https://github.com/kaitranntt/ccs/commit/760a5c3ca4fb10f408ddafc2bcd9a1c20e805e23)) * **cursor:** kill orphaned daemon on timeout and fix exit codes ([88ad13e](https://github.com/kaitranntt/ccs/commit/88ad13ee7ba7957a6d1756e994b707d6f7402e2a)) * **cursor:** pass all args to handler, use getCursorConfig in routes ([d7e0d1c](https://github.com/kaitranntt/ccs/commit/d7e0d1cacff827ee1cd0015cbf8143e0a5346680)) * **cursor:** save credentials after auto-detect and fix signal hang ([9f9db7d](https://github.com/kaitranntt/ccs/commit/9f9db7dcea29f8ed0e2b8d52dc8ade81f8ab050d)) * **cursor:** show auto-detect error message, add subcommand sync comment ([887efa4](https://github.com/kaitranntt/ccs/commit/887efa406957bb88f0dfdfe12732b1ac0e1cfae1)) * **cursor:** split daemon helpers to satisfy maintainability gate ([08a3e0b](https://github.com/kaitranntt/ccs/commit/08a3e0bae68aeefdb9e5cfaf4cb879363b16e056)) * **cursor:** tighten rate limit detection string matching ([79ba1de](https://github.com/kaitranntt/ccs/commit/79ba1de4e237f126a65b981660755a0845925ce9)) * **cursor:** use getCursorConfig(), fix help text and stub messages ([2ba826b](https://github.com/kaitranntt/ccs/commit/2ba826bb722c75bc773dd132095d6a42abb36691)) * **cursor:** use process.execPath and add safeResolve to model fetcher ([9478967](https://github.com/kaitranntt/ccs/commit/94789676b9642d539e9365fc03a961691981ed12)) * **cursor:** use stdio ignore, sequential polling, move CursorConfig to types ([ce19153](https://github.com/kaitranntt/ccs/commit/ce1915366d5012097b5b6814c2c672d04f16ab61)) * **cursor:** validate fetch status before streaming fallback and register abort early ([27badb2](https://github.com/kaitranntt/ccs/commit/27badb2584a9131b9408dacc1f58417745968dbe)) * **cursor:** validate request body on settings endpoints ([f5a912b](https://github.com/kaitranntt/ccs/commit/f5a912b114107bdc26fdcacb936ac6bf4d9f50c5)) * **format:** align image analysis check with pinned prettier ([ae83be1](https://github.com/kaitranntt/ccs/commit/ae83be159052e064ab639db2bde140326d42769f)) * **hardening:** count executable sync fs call sites ([d21b5c4](https://github.com/kaitranntt/ccs/commit/d21b5c44ee736a4fea6473a32071d289fa43202e)) * **hardening:** handle regex literals after else/do ([65a1d8a](https://github.com/kaitranntt/ccs/commit/65a1d8ae2cd2027eb6e6992daf15466a000c48d2)) * **hardening:** handle regex literals in sync-call scanner ([bb9d846](https://github.com/kaitranntt/ccs/commit/bb9d846a549642c8b90de96a8f2377546dc2d11c)) * **hardening:** ignore literal text in sync-call metrics ([8193e9d](https://github.com/kaitranntt/ccs/commit/8193e9d67fef073c221f470559faa5b19db65056)) * **maintainability:** enforce gate and correct loc metric ([2610971](https://github.com/kaitranntt/ccs/commit/2610971d2e023af24c3364d94fc1a7be7e00843f)) * **maintainability:** harden tracked scan and baseline checks ([33e9a88](https://github.com/kaitranntt/ccs/commit/33e9a8849420b2cdf68f1ddd5ef93d22fafc50f7)) * **maintainability:** require git-tracked scan for gate ([b7481cf](https://github.com/kaitranntt/ccs/commit/b7481cf346c80fc3b178cb7c60c9459865a52f8c)) * **maintainability:** scan tracked src files for stable gate ([8f0ba48](https://github.com/kaitranntt/ccs/commit/8f0ba481edf22fd87da1ad44e4eea2c257695d75)) * **test:** avoid global ui mock leakage in shell completion tests ([851f870](https://github.com/kaitranntt/ccs/commit/851f870fa8cce523205f547712ad5596e96bf3d6)) * **ui:** add method-aware kiro auth flow parity ([6a21f39](https://github.com/kaitranntt/ccs/commit/6a21f3921b618ba61949cf1eeccc2251dd3f6719)), closes [#552](https://github.com/kaitranntt/ccs/issues/552) [#233](https://github.com/kaitranntt/ccs/issues/233) * **ui:** add trim validation for composite tier model fields ([b6e1d0c](https://github.com/kaitranntt/ccs/commit/b6e1d0c4810581bd5a4e68b990601ac3c1f90cc8)) * **ui:** fix TypeScript error in composite edit dialog tier mapping ([240dfe2](https://github.com/kaitranntt/ccs/commit/240dfe29cf2aefead7850c03b5da592d3ebd04b0)) * **ui:** use default tier provider instead of hardcoded 'gemini' ([f3618c5](https://github.com/kaitranntt/ccs/commit/f3618c51d77512993dbe6a587c03db18d799cc32)) * **ui:** use type-only import for KiroAuthMethod ([e3f0860](https://github.com/kaitranntt/ccs/commit/e3f0860750e9213572727b8c3f5deb3c57615937)) * **web-server:** make kiro auth routes method-aware ([577991c](https://github.com/kaitranntt/ccs/commit/577991c282fb3646f42d5c657c94dd5c07f6b4e3)), closes [#552](https://github.com/kaitranntt/ccs/issues/552) [#233](https://github.com/kaitranntt/ccs/issues/233) ### Documentation * **guidelines:** add AGENTS symlink and neutral wording ([fca5ca2](https://github.com/kaitranntt/ccs/commit/fca5ca203f03d918ae3557754715a535a9ea85c4)) * **kiro:** document method-aware auth behavior ([14dd341](https://github.com/kaitranntt/ccs/commit/14dd34187d94fc07419175c17cd893e3f0081537)), closes [#552](https://github.com/kaitranntt/ccs/issues/552) [#233](https://github.com/kaitranntt/ccs/issues/233) ### Code Refactoring * **cliproxy:** centralize provider capability registry ([924e368](https://github.com/kaitranntt/ccs/commit/924e3686c8741986def8474d079cc60ea13eee29)) * **commands:** add command contract and migrate shell completion ([fc4b77b](https://github.com/kaitranntt/ccs/commit/fc4b77bc520da688af6e26add33fc7b25ff4d5c0)) ### Tests * **cliproxy:** add composite variant v2 unit tests ([e0ae5f2](https://github.com/kaitranntt/ccs/commit/e0ae5f20ff60fb8c94788a04b9c63ddb4b01b884)) * **cliproxy:** add regression coverage for update consistency ([7dd4ce5](https://github.com/kaitranntt/ccs/commit/7dd4ce5453b7e22ff1d378f396e4f8d61300a543)) * **cliproxy:** add thinking suffix test and document exit 0 behavior ([c35de7e](https://github.com/kaitranntt/ccs/commit/c35de7ec9ab1eac166fc1a74bb9da3be61975ee8)) * **cliproxy:** stabilize path-sensitive CI test assertions ([c9faf6c](https://github.com/kaitranntt/ccs/commit/c9faf6cdc9d5e34b1e69ed055b4e845657444c87)) * **cliproxy:** stabilize thinking override assertion ([d28fb2c](https://github.com/kaitranntt/ccs/commit/d28fb2cdbd9d585f2d045fb0a64f9ec41ab5776b)) * use getCcsDir() instead of os.homedir() for test isolation ([ca7bb23](https://github.com/kaitranntt/ccs/commit/ca7bb23970ba66c9b5f7ce68e96700bca8303656))
CCS - Claude Code Switch
The universal AI profile manager for Claude Code.
Run Claude, Gemini, GLM, and any Anthropic-compatible API - concurrently, without conflicts.
The Three Pillars
| Capability | What It Does | Manage Via |
|---|---|---|
| Multiple Claude Accounts | Run work + personal Claude subs simultaneously | Dashboard |
| OAuth Providers | Gemini, Codex, Antigravity - zero API keys needed | Dashboard |
| API Profiles | GLM, Kimi, or any Anthropic-compatible API | Dashboard |
Quick Start
1. Install
npm install -g @kaitranntt/ccs
Alternative package managers
yarn global add @kaitranntt/ccs # yarn
pnpm add -g @kaitranntt/ccs # pnpm (70% less disk space)
bun add -g @kaitranntt/ccs # bun (30x faster)
2. Open Dashboard
ccs config
# Opens http://localhost:3000
Want to run the dashboard in Docker? See docker/README.md.
3. Configure Your Accounts
The dashboard provides visual management for all account types:
- Claude Accounts: Create isolated instances (work, personal, client)
- OAuth Providers: One-click auth for Gemini, Codex, Antigravity, Kiro, Copilot
- API Profiles: Configure GLM, Kimi with your keys
- Health Monitor: Real-time status across all profiles
Analytics Dashboard
Live Auth Monitor
CLI Proxy API & Copilot Integration
WebSearch Fallback
Built-in Providers
| Provider | Auth Type | Command | Best For |
|---|---|---|---|
| Claude | Subscription | ccs |
Default, strategic planning |
| Gemini | OAuth | ccs gemini |
Zero-config, fast iteration |
| Codex | OAuth | ccs codex |
Code generation |
| Copilot | OAuth | ccs copilot or ccs ghcp |
GitHub Copilot models |
| Cursor IDE | Local Token | ccs cursor |
Cursor subscription models via local daemon |
| Kiro | OAuth (AWS default) | ccs kiro |
AWS CodeWhisperer (Claude-powered) |
| Antigravity | OAuth | ccs agy |
Alternative routing |
| OpenRouter | API Key | ccs openrouter |
300+ models, unified API |
| Ollama | Local | ccs ollama |
Local open-source models, privacy |
| Ollama Cloud | API Key | ccs ollama-cloud |
Cloud-hosted open-source models |
| GLM | API Key | ccs glm |
Cost-optimized execution |
| Kimi | API Key | ccs kimi |
Long-context, thinking mode |
| Azure Foundry | API Key | ccs foundry |
Claude via Microsoft Azure |
| Minimax | API Key | ccs mm |
M2 series, 1M context |
| DeepSeek | API Key | ccs deepseek |
V3.2 and R1 reasoning |
| Qwen | API Key | ccs qwen |
Alibaba Cloud, qwen3-coder |
OpenRouter Integration (v7.0.0): CCS v7.0.0 adds OpenRouter with interactive model picker, dynamic discovery, and tier mapping (opus/sonnet/haiku). Create via ccs api create --preset openrouter or dashboard.
Ollama Integration: Run local open-source models (qwen3-coder, gpt-oss:20b) with full privacy. Use ccs api create --preset ollama - requires Ollama v0.14.0+ installed. For cloud models, use ccs api create --preset ollama-cloud.
Azure Foundry: Use ccs api create --preset foundry to set up Claude via Microsoft Azure AI Foundry. Requires Azure resource and API key from ai.azure.com.
OAuth providers authenticate via browser on first run. Tokens are cached in
~/.ccs/cliproxy/auth/.
Powered by:
- CLIProxyAPIPlus - Extended OAuth proxy with Kiro (@fuko2935, @Ravens2121) and Copilot (@em4go) support
- CLIProxyAPI - Core OAuth proxy for Gemini, Codex, Antigravity
- copilot-api - GitHub Copilot API integration
Tip
Need more? CCS supports any Anthropic-compatible API. Create custom profiles for self-hosted LLMs, enterprise gateways, or alternative providers. See API Profiles documentation.
Usage
Basic Commands
ccs # Default Claude session
ccs gemini # Gemini (OAuth)
ccs codex # OpenAI Codex (OAuth)
ccs cursor # Cursor IDE integration (token import + local daemon)
ccs kiro # Kiro/AWS CodeWhisperer (OAuth)
ccs ghcp # GitHub Copilot (OAuth device flow)
ccs agy # Antigravity (OAuth)
ccs ollama # Local Ollama (no API key needed)
ccs glm # GLM (API key)
Kiro Auth Methods
ccs kiro --auth defaults to AWS Builder ID Device OAuth (best support for AWS org accounts).
ccs kiro --auth --kiro-auth-method aws # AWS Builder ID device code (default)
ccs kiro --auth --kiro-auth-method aws-authcode # AWS Builder ID auth code
ccs kiro --auth --kiro-auth-method google # Google OAuth
ccs kiro --auth --kiro-auth-method github # Dashboard management OAuth flow
Dashboard parity: ccs config -> Accounts -> Add Kiro account -> choose Auth Method.
Cursor IDE Quick Start
ccs cursor enable
ccs cursor auth
ccs cursor start
ccs cursor status
If auto-detect is unavailable:
ccs cursor auth --manual --token <token> --machine-id <machine-id>
Defaults:
- Port:
20129 - Ghost mode: enabled
- Dashboard page:
ccs config->Cursor IDE
Detailed guide: docs/cursor-integration.md
Parallel Workflows
Run multiple terminals with different providers:
# Terminal 1: Planning (Claude Pro)
ccs work "design the authentication system"
# Terminal 2: Execution (GLM - cost optimized)
ccs glm "implement the user service from the plan"
# Terminal 3: Local testing (Ollama - offline, privacy)
ccs ollama "run tests and generate coverage report"
# Terminal 4: Review (Gemini)
ccs gemini "review the implementation for security issues"
Multi-Account Claude
Create isolated Claude instances for work/personal separation:
ccs auth create work
# Run concurrently in separate terminals
ccs work "implement feature" # Terminal 1
ccs "review code" # Terminal 2 (personal account)
Maintenance
Health Check
ccs doctor
Verifies: Claude CLI, config files, symlinks, permissions.
Update
ccs update # Update to latest
ccs update --force # Force reinstall
ccs update --beta # Install dev channel
Sync Shared Items
ccs sync
Re-creates symlinks for shared commands, skills, and settings.
Antigravity Quota Management
ccs cliproxy doctor # Check quota status for all agy accounts
Auto-Failover: When an Antigravity account runs out of quota, CCS automatically switches to another account with remaining capacity. Shared GCP project accounts are excluded (pooled quota).
CLIProxy Lifecycle
ccs cliproxy start # Start CLIProxy background service
ccs cliproxy status # Check running status
ccs cliproxy restart # Restart CLIProxy service
ccs cliproxy stop # Stop running CLIProxy service
Configuration
CCS auto-creates config on install. Dashboard is the recommended way to manage settings.
Config location: ~/.ccs/config.yaml
Custom Claude CLI path
If Claude CLI is installed in a non-standard location:
export CCS_CLAUDE_PATH="/path/to/claude" # Unix
$env:CCS_CLAUDE_PATH = "D:\Tools\Claude\claude.exe" # Windows
Windows symlink support
Enable Developer Mode for true symlinks:
- Settings → Privacy & Security → For developers
- Enable Developer Mode
- Reinstall:
npm install -g @kaitranntt/ccs
Without Developer Mode, CCS falls back to copying directories.
WebSearch
Third-party profiles (Gemini, Codex, GLM, etc.) cannot use Anthropic's native WebSearch. CCS automatically provides web search via CLI tools with automatic fallback.
How It Works
| Profile Type | WebSearch Method |
|---|---|
| Claude (native) | Anthropic WebSearch API |
| Third-party profiles | CLI Tool Fallback Chain |
CLI Tool Fallback Chain
CCS intercepts WebSearch requests and routes them through available CLI tools:
| Priority | Tool | Auth | Install |
|---|---|---|---|
| 1st | Gemini CLI | OAuth (free) | npm install -g @google/gemini-cli |
| 2nd | OpenCode | OAuth (free) | curl -fsSL https://opencode.ai/install | bash |
| 3rd | Grok CLI | API Key | npm install -g @vibe-kit/grok-cli |
Configuration
Configure via dashboard (Settings page) or ~/.ccs/config.yaml:
websearch:
enabled: true # Enable/disable (default: true)
gemini:
enabled: true # Use Gemini CLI (default: true)
model: gemini-2.5-flash # Model to use
opencode:
enabled: true # Use OpenCode as fallback
grok:
enabled: false # Requires XAI_API_KEY
Tip
Gemini CLI is recommended - free OAuth authentication with 1000 requests/day. Just run
geminionce to authenticate via browser.
See docs/websearch.md for detailed configuration and troubleshooting.
Remote CLIProxy
CCS v7.x supports connecting to remote CLIProxyAPI instances, enabling:
- Team sharing: One CLIProxyAPI server for multiple developers
- Cost optimization: Centralized API key management
- Network isolation: Keep API credentials on a secure server
Quick Setup
Configure via dashboard (Settings > CLIProxy Server) or CLI flags:
ccs gemini --proxy-host 192.168.1.100 --proxy-port 8317
ccs codex --proxy-host proxy.example.com --proxy-protocol https
CLI Flags
| Flag | Description |
|---|---|
--proxy-host |
Remote proxy hostname or IP |
--proxy-port |
Remote proxy port (default: 8317 for HTTP, 443 for HTTPS) |
--proxy-protocol |
http or https (default: http) |
--proxy-auth-token |
Bearer token for authentication |
--local-proxy |
Force local mode, ignore remote config |
--remote-only |
Fail if remote unreachable (no fallback) |
See Remote Proxy documentation for detailed setup.
Documentation
| Topic | Link |
|---|---|
| Installation | docs.ccs.kaitran.ca/getting-started/installation |
| Configuration | docs.ccs.kaitran.ca/getting-started/configuration |
| OAuth Providers | docs.ccs.kaitran.ca/providers/oauth-providers |
| Multi-Account Claude | docs.ccs.kaitran.ca/providers/claude-accounts |
| API Profiles | docs.ccs.kaitran.ca/providers/api-profiles |
| Remote Proxy | docs.ccs.kaitran.ca/features/remote-proxy |
| Cursor IDE (local guide) | ./docs/cursor-integration.md |
| CLI Reference | docs.ccs.kaitran.ca/reference/cli-commands |
| Architecture | docs.ccs.kaitran.ca/reference/architecture |
| Troubleshooting | docs.ccs.kaitran.ca/reference/troubleshooting |
Uninstall
npm uninstall -g @kaitranntt/ccs
Alternative package managers
yarn global remove @kaitranntt/ccs
pnpm remove -g @kaitranntt/ccs
bun remove -g @kaitranntt/ccs
Philosophy
- YAGNI: No features "just in case"
- KISS: Simple, focused implementation
- DRY: One source of truth (config)
Contributing
See CONTRIBUTING.md.
License
MIT License - see LICENSE.






