Skip to content

Halon, Firefight’s AI SRE, has a named tool for the common questions on each platform you connect, such as logs, deploys and metrics. For everything else, each platform also gives it one general read, the api_read tool, which reads anything that platform’s API offers.

ConnectionWhat api_read reads
GitHub, GitLab, BitbucketAny read of the REST API, inside the repositories and workspaces the connection reaches
Azure DevOpsAny read of the REST API inside the projects the connection reads, and a few reads of the organization, such as its projects and agent pools
CircleCIAny read of CircleCI’s API, version 2 or 3, such as a project’s schedules, contexts, insights and flaky tests
Render, Vercel, Netlify, DigitalOcean, Trigger.dev, TinybirdAny read of the platform’s REST API
Fly.ioAny read of the Machines API
RailwayAny query of Railway’s GraphQL API
KubernetesAny read under /api and /apis, as kubectl get --raw would make it
AWSAny operation named Describe, List, Get or BatchGet of the services Halon reads, such as ECS, Lambda, EC2, RDS, CloudWatch, CodePipeline, CodeBuild, CodeDeploy, CloudFormation, load balancers, Auto Scaling, Route 53, SQS, SNS, DynamoDB, EKS, ElastiCache, API Gateway, CloudFront, ECR, IAM, S3 and AWS Health
Google CloudAny read of a Google Cloud API, such as Cloud Run, Compute Engine, Cloud SQL, GKE, Cloud Build, Cloud Deploy, Logging and Monitoring
AzureAny read of Azure Resource Manager inside the subscription

PostgreSQL’s query tool runs any read-only query. Northflank and Cloudflare have their own tools that reach their whole API, and Statuspage and Instatus have a named tool for each part of theirs. Modal and Convex have no general read, since Modal offers no public API and Convex’s deploy key reaches only what Halon’s named Convex tools already read. A platform connected through its own MCP server, such as Neon, Supabase, PlanetScale, ClickHouse, Turso, Upstash, Grafana or Linear, offers the tools that server publishes. A CircleCI connection made through CircleCI’s own MCP server has no general read.

Each Northflank build, workflow run, release flow run and template run Halon tells you about links to its own page in Northflank, for a job’s builds as well as a service’s, so you can open the run Halon is talking about in one click.

The general read never changes anything. Changes go through the named tools that make them, with every confirmation and approval rule they already have.

Because it only reads, Halon never asks before using it, in a chat, an investigation or a watch. Members can use it by default, like every tool that only reads, and you narrow it or switch it off on the connection the same way as any other tool. See Permissions.

Secrets never reach Halon through a read.

  • Environment variables, secret files, tokens, passwords, keys and connection strings come back as their names, with the values hidden
  • Webhooks show their events, whether they are on and how their last delivery went, with their address cut to its host and their secret hidden, since a webhook’s address can carry the receiving service’s token
  • Reads that answer nothing but a credential are refused, such as a database’s connection details, a Kubernetes cluster’s kubeconfig, a registry’s credentials, AWS Secrets Manager and Parameter Store values, or Google Cloud Secret Manager values
  • Links that would download something for anyone holding them are refused, such as signed log or archive addresses
  • On Kubernetes, nothing reaches inside a running container, so a proxy, exec, attach or port forward is never made
  • On Azure DevOps, variables, variable groups, service connections and service hooks come back as names, and run logs, artifacts, file contents, secure files and personal access tokens are refused. Halon reads a job’s log through its own job log tool
  • On CircleCI, environment variables, checkout keys, signing certificates and notification integrations come back as names, a usage export and a runner’s tokens are never read, and a job’s output is read through Halon’s own job log tool

A read reaches only what the connection was set up for. On a connection made for some Render workspaces, Vercel teams, Railway projects, Azure DevOps projects, Fly.io organizations, Kubernetes namespaces, Google Cloud projects, Azure subscriptions or AWS regions, a read that names anything else is refused, and Halon says which to connect instead. A list that would mix in another workspace or namespace is refused rather than shown.

Halon also reads only what the credentials you gave allow. When the platform refuses a read, Halon tells you which permission or scope to add to the key or token.

Halon reads the platform’s own published API reference before its first call rather than guessing a path. For GitHub, GitLab, Netlify, Fly.io, Vercel, DigitalOcean, Trigger.dev, Kubernetes, Railway, AWS, Google Cloud and Azure, that reference is part of the providers’ documentation Halon reads. CircleCI’s version 2 reference is part of it too. Render, Bitbucket, Tinybird and Azure DevOps publish theirs only on their own sites, as does CircleCI for version 3, so Halon reads it there when your workspace allows it to read the web.

When the reference has no read for what you asked, Halon tells you the platform’s API does not offer it, and gives the steps in the platform’s own dashboard instead.