Claude Code security

API Keys and Secrets Hardcoded in Source Code

Claude Code generated code with API keys, database passwords, or other secrets hardcoded directly in source files. These credentials are now committed to your Git repository and visible to anyone with access to the code.

This is one of the most common security mistakes in AI-assisted development. The AI often places real credentials inline to make the code immediately functional, without considering that the code will be version-controlled and potentially shared.

You may discover this when GitHub sends a secret scanning alert, when a third-party service notifies you of leaked credentials, or when you notice unexpected charges on your cloud account.

Error Messages You Might See

GitHub Secret Scanning: API key detected in commit Warning: Possible credential leak found Authentication failed: API key has been revoked Billing alert: Unauthorized usage detected on your account
GitHub Secret Scanning: API key detected in commitWarning: Possible credential leak foundAuthentication failed: API key has been revokedBilling alert: Unauthorized usage detected on your account

Common Causes

  • Credentials pasted into prompts — You shared API keys in your prompt and Claude Code embedded them directly in the generated files
  • No .env file pattern — The generated project doesn't use environment variables or a .env file for configuration
  • Missing .gitignore — Even if a .env file exists, it's not listed in .gitignore and gets committed
  • Config files with real values — Application config files (config.json, settings.py) contain production credentials as defaults
  • Test files with real keys — Integration tests or seed scripts use actual API keys instead of test/mock credentials

How to Fix It

  1. Search your entire codebase — Use tools like trufflehog, gitleaks, or grep for patterns like 'sk-', 'AKIA', 'ghp_', or 'password=' across all files and Git history
  2. Move all secrets to environment variables — Replace hardcoded values with process.env.KEY_NAME or os.environ['KEY_NAME'] and create a .env.example with placeholder values
  3. Rotate every exposed credential immediately — Generate new keys for every service whose credentials were committed, even if the repo is private
  4. Scrub Git history — Use git filter-branch or BFG Repo Cleaner to remove secrets from past commits
  5. Add pre-commit hooks — Install detect-secrets or gitleaks as a pre-commit hook to prevent future leaks

Real developers can help you.

Victor Denisov Victor Denisov Developer Matt Butler Matt Butler Software Engineer @ AWS Richard McSorley Richard McSorley Full-Stack Software Engineer with 8+ years building high-performance applications for enterprise clients. Shipped production systems at Walmart (4,000+ stores), Cigna (20M+ users), and Arkansas Blue Cross. 5 patents in retail/supply chain tech. Currently focused on AI integrations, automation tools, and TypeScript-first architectures. Dor Yaloz Dor Yaloz SW engineer with 6+ years of experience, I worked with React/Node/Python did projects with React+Capacitor.js for ios Supabase expert Meïr Ankri Meïr Ankri Full-stack developer specializing in React / Next.js / Node.js with 6+ years of experience. I've worked across various sectors including automotive (Reezocar/Société Générale), healthcare (Medical Link SaaS), and e-commerce (Glasman). I build web apps end-to-end, from architecture to production, with a focus on scalability, performance, and code quality. I also mentor junior developers and contribute to technical decisions and code reviews. Prakash Prajapati Prakash Prajapati I’m a Senior Python Developer specializing in building secure, scalable, and highly available systems. I work primarily with Python, Django, FastAPI, Docker, PostgreSQL, and modern AI tooling such as PydanticAI, focusing on clean architecture, strong design principles, and reliable DevOps practices. I enjoy solving complex engineering problems and designing systems that are maintainable, resilient, and built to scale. Franck Plazanet Franck Plazanet I am a Strategic Engineering Leader with over 8 years of experience building high-availability enterprise systems and scaling high-performing technical teams. My focus is on bridging the gap between complex technology and business growth. Core Expertise: 🚀 Leadership: Managing and coaching teams of 15+ engineers, fostering a culture of accountability and continuous improvement. 🏗️ Architecture: Enterprise Core Systems, Multi-system Integration (ERP/API/ETL), and Core Database Structure. ☁️ Cloud & Scale: AWS Expert; architected systems handling 10B+ monthly requests and managing 100k+ SKUs. 📈 Business Impact: Aligning tech strategy with P&L goals to drive $70k+ in monthly recurring revenue. I thrive on "out-of-the-box" thinking to solve complex technical bottlenecks and am always looking for ways to use automation to improve business productivity. Kingsley Omage Kingsley Omage Fullstack software engineer passionate about AI Agents, blockchain, LLMs. Costea Adrian Costea Adrian Embedded Engineer specilizing in perception systems. Latest project was a adas camera calibration system. PawelPloszaj PawelPloszaj I'm fronted developer with 10+ years of experience with big projects. I have small backend background too

You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.

Get Help

Frequently Asked Questions

Are my API keys compromised if they were in a private repo?

Treat them as compromised. Private repos can be forked, cloned by team members, or exposed through CI logs. Always rotate keys that were ever committed to any repository.

How do I remove secrets from Git history?

Use BFG Repo Cleaner or git filter-repo to rewrite history. After cleaning, force-push and have all collaborators re-clone. The old commits may still exist in forks or cached copies.

Related Claude Code Issues

Can't fix it yourself?
Real developers can help.

You don't need to be technical. Just describe what's wrong and a verified developer will handle the rest.

Get Help