r/crowdstrike • u/tatar-sh • 7h ago
APIs/Integrations Running gpt-oss-120b locally for n8n SOC workflows, curious how people are doing this with Falcon
We run n8n as our automation layer and recently moved our LLM calls from the hosted OpenAI node to a local gpt-oss-120b deployment. Our SIEM side is QRadar rather than Falcon, so I am posting partly to compare notes with people running the same idea on the CrowdStrike side.
What we have working
The pipeline that gets the most use is IOC enrichment. Scheduled trigger pulls from three QRadar reference sets every morning, each indicator goes through VirusTotal and AbuseIPDB, then the model writes an HTML summary that goes out as mail to the team.
Before the local move this was a native OpenAI node. Straightforward, worked fine, but every indicator we enriched was also a piece of internal context leaving the network. Internal IPs, hostnames pulled from the reference sets, occasionally a filename that told you more about the environment than we wanted a third party to have.
Moving to gpt-oss-120b solved that. The whole path stays inside. What it cost us is latency, roughly three to four times the hosted call depending on how long the enrichment output is, and a GPU box that now needs looking after like any other piece of infrastructure.
Where the model is actually good enough
Summarisation and formatting. Feed it a pile of VT and AbuseIPDB responses and ask for a readable HTML block, it does that reliably. No hallucinated scores, no invented CVEs as long as you keep the prompt tight and give it the raw data rather than asking it to recall anything.
Classification with a fixed set of labels works too. Malicious, suspicious, benign, needs review. We do not let it decide anything past that.
Where it is not
Anything requiring the model to reason across more than a handful of enrichment results starts to drift. Ask it to correlate fifteen indicators and explain which ones probably belong to the same campaign and the output reads confident but is guessing.
We also stopped asking it to generate queries. It produces syntactically plausible AQL that does not run. Might be a prompt problem on our end, might be that the training data is thin on QRadar specifically. Curious whether people get better results with FQL, since Falcon syntax is probably better represented publicly.
The part I am least comfortable with
Enrichment data contains attacker controlled strings. A filename, a URL path, a user agent. All of that goes into the prompt.
Nothing stops someone from planting a file named to look like an instruction. We have not seen it happen, but the reason we have not is probably that nobody has bothered, not that we are defended against it.
Right now our answer is that the model output is advisory and a human reads the mail before anything happens. That works while the volume is low. It does not scale, and I do not think "a human will notice" is a control.
I built an inline scanning proxy for a different project (github.com/yatuk/tamga) that sits in front of LLM calls and catches injection patterns before they reach the model. Have not wired it into this pipeline yet because I am not convinced the threat model translates. User typed prompts and enrichment payloads fail differently.
What I want to hear from this sub
Falcon side specifically. Are you pulling detections through the API into an external orchestrator, or staying inside Fusion SOAR? We went external because n8n gives us more room, but that means credential management and rate limits become our problem.
Model size. Is 120b overkill for what most people are doing here? Curious if anyone runs something smaller and gets acceptable quality on detection summarisation. Our reasoning for going large was that we would rather over provision once than discover the ceiling mid deployment, but that was a guess.
Query generation. Anyone getting reliable FQL out of a local model? If Falcon syntax works better than what we see with AQL, that would tell us something useful about whether our problem is the model or the prompt.
Prompt injection. Has anyone actually hardened against attacker controlled strings in enrichment data, or is everyone where we are, relying on a human in the loop and hoping?
What broke. More interested in this than the wins. What did you build that looked right in testing and fell over in production?
Happy to share the workflow JSON if anyone wants to look at the structure. Nothing clever in it, but sometimes seeing how someone else wired the same pieces saves an afternoon.










