frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Ask HN: Anyone Using a Mac Studio for Local AI/LLM?

44•UmYeahNo•1d ago•28 comments

Ask HN: Ideas for small ways to make the world a better place

10•jlmcgraw•10h ago•17 comments

Ask HN: Non-profit, volunteers run org needs CRM. Is Odoo Community a good sol.?

2•netfortius•5h ago•1 comments

Ask HN: Non AI-obsessed tech forums

18•nanocat•7h ago•13 comments

Ask HN: 10 months since the Llama-4 release: what happened to Meta AI?

43•Invictus0•1d ago•11 comments

AI Regex Scientist: A self-improving regex solver

6•PranoyP•11h ago•1 comments

Ask HN: Who wants to be hired? (February 2026)

139•whoishiring•4d ago•513 comments

Ask HN: Who is hiring? (February 2026)

312•whoishiring•4d ago•511 comments

Tell HN: Another round of Zendesk email spam

104•Philpax•2d ago•54 comments

Ask HN: Is Connecting via SSH Risky?

19•atrevbot•2d ago•37 comments

Ask HN: Why LLM providers sell access instead of consulting services?

4•pera•18h ago•13 comments

Ask HN: Any International Job Boards for International Workers?

2•15charslong•7h ago•2 comments

Ask HN: Has your whole engineering team gone big into AI coding? How's it going?

17•jchung•2d ago•12 comments

Ask HN: What is the most complicated Algorithm you came up with yourself?

3•meffmadd•19h ago•7 comments

Ask HN: How does ChatGPT decide which websites to recommend?

5•nworley•1d ago•11 comments

Ask HN: Is it just me or are most businesses insane?

7•justenough•1d ago•5 comments

Ask HN: Mem0 stores memories, but doesn't learn user patterns

9•fliellerjulian•2d ago•6 comments

Ask HN: Is there anyone here who still uses slide rules?

123•blenderob•3d ago•122 comments

Ask HN: Anyone Seeing YT ads related to chats on ChatGPT?

2•guhsnamih•1d ago•4 comments

Ask HN: Does global decoupling from the USA signal comeback of the desktop app?

5•wewewedxfgdf•1d ago•2 comments

Kernighan on Programming

170•chrisjj•4d ago•61 comments

We built a serverless GPU inference platform with predictable latency

5•QubridAI•2d ago•1 comments

Ask HN: How Did You Validate?

4•haute_cuisine•1d ago•4 comments

Ask HN: Does a good "read it later" app exist?

8•buchanae•3d ago•18 comments

Ask HN: Have you been fired because of AI?

17•s-stude•4d ago•15 comments

Ask HN: Cheap laptop for Linux without GUI (for writing)

15•locusofself•3d ago•16 comments

Ask HN: Anyone have a "sovereign" solution for phone calls?

12•kldg•3d ago•1 comments

Test management tools for automation heavy teams

2•Divyakurian•1d ago•2 comments

Ask HN: OpenClaw users, what is your token spend?

14•8cvor6j844qw_d6•4d ago•6 comments

Ask HN: Has anybody moved their local community off of Facebook groups?

23•madsohm•4d ago•18 comments
Open in hackernews

Lost $300 due to an API key leak from "vibe coding" – Learn from my mistake

8•liulanggoukk•4mo ago
I just learned an expensive lesson and wanted to share it here so others don’t make the same mistake.

I recently lost $300 because of an API key leak. It started with a surprise $200 charge from Google Cloud, and when I looked into it, I found another $100 charge from the day before. Both were for Gemini API usage that I never intentionally set up.

After digging, I discovered the issue: I had hard-coded an API key in a script that was part of a feature I ended up deprecating. The file was only in the codebase for two days, but that was enough for the key to leak. Google actually sent me alerts about unusual activity, but I missed them because they went to a less-frequently-checked email account.

Here’s what I learned:

Never hardcode API keys - Use environment variables or a .env file, even for temporary code.

Set up billing alerts - Google Cloud (and other providers) let you set up alerts for unexpected charges.

Check all linked emails - Don’t ignore notifications, even if they’re sent to secondary accounts.

Don’t rely solely on GitHub’s secret scanning - It’s useful, but renaming variables can bypass it.

This happened while I was experimenting with "vibe coding" (letting AI generate code quickly), but I realized too late that human oversight is still crucial, especially for security.

Hope this helps someone avoid the same costly mistake!

TL;DR: Hard-coded an API key in a deprecated script, key leaked, and I got charged $300. Always use environment variables and set up billing alerts!

Comments

objcts•4mo ago
> human oversight is still crucial, especially for security

always always always: code review everything AI makes (CREAM)

it also helps if you understand what it’s writing. the only way to do that is to… review the code

giveita•4mo ago
I hate API keys. We need to get rid of them. Everyone who can influence this ... please do.

The alternative? JWT or suchlike. Authenticate each session with zero trust.

At big corp work everything is Okta / JWT / Yubikey etc. Very very occasionally an API key.

scarface_74•4mo ago
So exactly how would you suggest using a YubiKey in a script that runs automatically and is meant to run unsupervised?

Wouldn’t it be logical that Google knew about zero trust? The problem wasn’t the API Key, the problem was that the poster didn’t use best practices - see my other comment.

Even if it wasn’t a built in facility like the three or four ways to authenticate with GCP or AWS programmatically and you did have to use long live API keys, you could still piggy back off the cloud providers access I mentioned and read from a secure cloud hosted vault using your temporary keys from your script.

In the case of AWS read your third party API key from secrets manager and read secret manager based on your keys in your home directory or better yet your short lived local keys in your environment variables - not a local environment file that you will probably forget to use .gitignore for

giveita•4mo ago
Ideally an unauthorised script e.g. CI/CD is authenticated via a session initially. Yes under the hood a secret is stored and you could argue its morally an API key - however the UX wouldnt be developer logs in, copies a key to their clipboard then pastes it hopefully in the CI secrets section but also likely in the code.
scarface_74•4mo ago
I know more about AWS, but GCP from what I read is similar, best practice is that you have a web page that you authenticate to via SSO and get temporary access keys that you assign to environment variables. The SDK automatically knows how to read from the environment variables locally.

When you run your code on the cloud platform, you attach privileges to the run time environment (VM, Lambda, docker runtime, etc) that are properly scoped for least privilege. The SDK also knows how to get your permissions from it automatically. You never need to worry about your code getting the proper access keys.

I’ve done most of my CI/CD using AWS native services that you also attach the role to the runtime. For instance CodeBuild is really just a Linux or Windows Docker runtime that you can run anything in and you attach permissions to your CodeBuild project. Of course your AWS access is controlled ideally via your SSO or 2FA.

I have done some work with Azure DevOps - which doesn’t have anything to do with Azure. You can also use it to deploy your AWS and you store your access keys in an Azure controlled vault and your pipeline gives AWS permissions to your scripts. I think the same thing works with GitHub Actions.

fiftyacorn•4mo ago
I always wish you could kill switch a billing alert on any cloud service - so if it goes above my prescribed limit just take it offline
Someone1234•4mo ago
Most support this (e.g. AWS's free tier, Microsoft's Monthly Student Credit), but intentionally won't let customers manually set it. It isn't an oversight that they don't offer this, it is an intentional choice.

I think this bad-choice backfires though. I spend less time learning Cloud Services because the risks without a hard-limit are too high.

scarface_74•4mo ago
There was no such thing as a “free tier” on AWS before July of this year. There were some services that allowed free usage either for the first $x months or free up to a certain amount every month indefinitely.

Now there is an actual free tier that won’t let you go over $250 on AWS.

scarface_74•4mo ago
You learned the wrong lesson.

You should never specify API keys anywhere in your code or env files for GCP or AWS.

https://cloud.google.com/docs/authentication/application-def...

You still risk checking in your env file.

Doing it the correct way, your config is in your home directory locally far away from your repo and it finds the configuration automatically when running on GCP.

Even better when developing locally is assign environment variables to temporary access keys.

I’m being handwavy because I’m not a GCP guy. But on AWS, you do something similar by using “aws config” locally and using the IAM role attached to the VM, Lambda, etc so you never need to deploy with access keys.

This isn’t meant to be an “AWS does it better comment”. It looks like from my brief research, something similar is also best practice with GCP.

tkiolp4•4mo ago
Talking about hardcoded api keys, what’s the usual approach when dealing with a mobile app that talks to an api? Users don’t need auth to use the app (they do login via an alphanumeric code they get via marketing). I only know how to do this properly via auth flows (user inputs username + passwd, then app calls the api for a user jwt, the app then uses the jwt in subsequent calls). I don’t think using this flow makes sense when the user “logins” via a simple alphanumeric code (which is of length 5 and anyone could guess)
dankwizard•4mo ago
Kind of a nothing burger post.

I uploaded my API key to a public repository

I learned not to do this.

Never upload your API key to a public repository.

Ok.

tdeck•4mo ago
People keep doing this, so I don't see that it hurts to explain why, how, and what to do instead. Maybe this will click with someone who was about to make this mistake.
farseer•4mo ago
If Google sent you an alert, laud them and demand your $300 back?
rycao•4mo ago
You may be able to ask google for some lenience if this is the first occurrence. Definitely an expensive lesson to learn but it could have been much worse!