Skip to content

Commit 849c480

Browse files
committed
feat: enforce CODEBUFF_API_KEY restriction at type level
- Remove CODEBUFF_API_KEY from serverEnvSchema (web cannot access it) - Add ESLint rule to catch direct process.env.CODEBUFF_API_KEY access in web - CLI/SDK can still use process.env.CODEBUFF_API_KEY directly - Prevents accidental credit abuse where web uses Codebuff API key
1 parent ae9b006 commit 849c480

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

packages/internal/src/env-schema.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import { clientEnvSchema, clientProcessEnv } from '@codebuff/common/env-schema'
22
import z from 'zod/v4'
33

44
export const serverEnvSchema = clientEnvSchema.extend({
5-
// Backend variables
6-
CODEBUFF_API_KEY: z.string().optional(),
5+
// LLM API keys
76
OPEN_ROUTER_API_KEY: z.string().min(1),
87
OPENAI_API_KEY: z.string().min(1),
98
LINKUP_API_KEY: z.string().min(1),
@@ -37,8 +36,7 @@ export type ServerEnv = z.infer<typeof serverEnvSchema>
3736
export const serverProcessEnv: ServerInput = {
3837
...clientProcessEnv,
3938

40-
// Backend variables
41-
CODEBUFF_API_KEY: process.env.CODEBUFF_API_KEY,
39+
// LLM API keys
4240
OPEN_ROUTER_API_KEY: process.env.OPEN_ROUTER_API_KEY,
4341
OPENAI_API_KEY: process.env.OPENAI_API_KEY,
4442
LINKUP_API_KEY: process.env.LINKUP_API_KEY,

web/.eslintrc.cjs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ module.exports = {
2222
'@typescript-eslint/no-explicit-any': 'off',
2323
'@typescript-eslint/no-unused-vars': 'off',
2424
'react/no-unescaped-entities': 'off',
25+
// Prevent using CODEBUFF_API_KEY in web - users must provide their own API key
26+
// This prevents accidentally using Codebuff's credits for user operations
27+
'no-restricted-syntax': [
28+
'error',
29+
{
30+
selector: "MemberExpression[property.name='CODEBUFF_API_KEY']",
31+
message: 'CODEBUFF_API_KEY is not allowed in web package. Users must provide their own API key via Authorization header.',
32+
},
33+
],
2534
},
2635
settings: {
2736
tailwindcss: {

0 commit comments

Comments
 (0)