
Security News
curl Shuts Down Bug Bounty Program After Flood of AI Slop Reports
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.
@vibe-kit/auth
Advanced tools
Universal OAuth authentication library for AI providers' MAX subscriptions. Currently supports Claude AI with Gemini, Grok, and ChatGPT Max coming soon.
Universal OAuth authentication library for AI providers' MAX subscriptions. Currently supports Claude AI with Gemini, Grok, and ChatGPT Max coming soon.
npm install @vibe-kit/auth
For Node.js applications (CLI tools, servers, etc.), use the Node.js-specific import:
import { ClaudeAuth } from '@vibe-kit/auth/node';
// Start OAuth flow (opens browser automatically)
const token = await ClaudeAuth.authenticate();
// Check if authenticated
const isAuthenticated = await ClaudeAuth.isAuthenticated();
// Get valid token (auto-refresh if needed)
const accessToken = await ClaudeAuth.getValidToken();
// Verify authentication
const isValid = await ClaudeAuth.verify();
// Get authentication status
const status = await ClaudeAuth.getStatus();
// Logout
await ClaudeAuth.logout();
For browser/web applications, use the browser-safe import:
import { ClaudeWebAuth, LocalStorageTokenStorage } from '@vibe-kit/auth/browser';
// OR use the default import which is browser-safe:
// import { ClaudeAuth, LocalStorageTokenStorage } from '@vibe-kit/auth';
// Create storage
const storage = new LocalStorageTokenStorage();
const auth = new ClaudeWebAuth(storage);
// Create authorization URL
const { url, state, codeVerifier } = ClaudeWebAuth.createAuthorizationUrl();
// Open URL in browser for user authentication
window.open(url, '_blank');
// After user authorizes and provides the code#state string:
const authCode = 'code123#state456'; // From user input
const token = await auth.authenticate(authCode, codeVerifier, state);
// Check authentication status
const isAuthenticated = await auth.isAuthenticated();
// Get valid token (auto-refresh if needed)
const accessToken = await auth.getValidToken();
Once authenticated, use the access token with your MAX subscription to access AI APIs:
import { ClaudeAuth } from '@vibe-kit/auth/node'; // For Node.js
// Authenticate and get token
let accessToken = await ClaudeAuth.getValidToken();
if (!accessToken) {
await ClaudeAuth.authenticate();
accessToken = await ClaudeAuth.getValidToken();
}
// Use with Claude Code CLI
// First, export the token as an environment variable:
// export CLAUDE_CODE_OAUTH_TOKEN=${accessToken}
// claude -p 'Hello, Claude!'
For browser applications:
import { ClaudeWebAuth, LocalStorageTokenStorage } from '@vibe-kit/auth/browser';
const storage = new LocalStorageTokenStorage();
const auth = new ClaudeWebAuth(storage);
// Get token (assumes user is already authenticated)
const accessToken = await auth.getValidToken();
if (!accessToken) {
// Handle authentication flow...
}
// Use with Claude Code CLI
// First, export the token as an environment variable:
// export CLAUDE_CODE_OAUTH_TOKEN=${accessToken}
// claude -p 'Hello!'
import { ClaudeAuth } from '@vibe-kit/auth/node';
// Export token in different formats
const envToken = await ClaudeAuth.exportToken('env');
const jsonToken = await ClaudeAuth.exportToken('json');
const fullToken = await ClaudeAuth.exportToken('full');
// Import from various sources
await ClaudeAuth.importToken({ fromEnv: true });
await ClaudeAuth.importToken({ fromFile: './token.json' });
await ClaudeAuth.importToken({ refreshToken: 'your-refresh-token' });
interface OAuthToken {
access_token: string;
token_type: string;
expires_in?: number;
refresh_token?: string;
scope?: string;
created_at: number;
}
@vibe-kit/auth/node for full functionality including file system access and browser launching@vibe-kit/auth/browser or default import for browser-safe functionalityInstead of paying per API call, leverage the subscriptions you already have:
The auth package can be used with any Claude AI client library or direct API calls:
// Node.js applications
import { authenticate, getValidToken } from '@vibe-kit/auth/node';
// Browser applications
import { ClaudeWebAuth } from '@vibe-kit/auth/browser';
// Claude AI with Anthropic SDK
import Anthropic from '@anthropic-ai/sdk';
import { ClaudeAuth } from '@vibe-kit/auth/node';
const accessToken = await ClaudeAuth.getValidToken();
const anthropic = new Anthropic({
apiKey: '', // Leave empty for OAuth
authToken: accessToken, // Use your MAX subscription token
});
const message = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1000,
messages: [{ role: 'user', content: 'Hello!' }]
});
FAQs
Universal OAuth authentication library for AI providers' MAX subscriptions. Currently supports Claude AI with Gemini, Grok, and ChatGPT Max coming soon.
We found that @vibe-kit/auth demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
A surge of AI-generated vulnerability reports has pushed open source maintainers to rethink bug bounties and tighten security disclosure processes.

Product
Scan results now load faster and remain consistent over time, with stable URLs and on-demand rescans for fresh security data.

Product
Socket's new Alert Details page is designed to surface more context, with a clearer layout, reachability dependency chains, and structured review.