Configuration
The script uses argparse and environment variables to set strict boundaries. This is crucial for a tool that interacts with cloud infrastructure:
--allow-write: Without this, the AI can only analyze. With it, the AI can actually create GitHub PRs and send Slack messages.
--allow-sensitive-data-access: Controls whether the model can see granular billing details or raw query logs.
--enable-multi-agent: Toggles a more advanced mode where specialized "sub-agents" (like a "Cost Guard") can be deployed for continuous monitoring.
Dynamic Tool Decorator (with_gcp_config)
Instead of manually initialising GCP clients inside every single tool, this decorator:
- Consistency: Every tool is guaranteed to handle project IDs and regions the same way.
- Dry Code: You don't have to write
instance = MyTool(project=...)inside every single function.
- Security/Safety: It centralises the multi-agent functionality check (the
enable_agents flag) so it can't be accidentally bypassed.
Output
| model | selector | Job ID | sources | slot (ms) | Bytes | Recommendation
Configuration
The script uses
argparseand environment variables to set strict boundaries. This is crucial for a tool that interacts with cloud infrastructure:--allow-write: Without this, the AI can only analyze. With it, the AI can actually create GitHub PRs and send Slack messages.--allow-sensitive-data-access: Controls whether the model can see granular billing details or raw query logs.--enable-multi-agent: Toggles a more advanced mode where specialized "sub-agents" (like a "Cost Guard") can be deployed for continuous monitoring.Dynamic Tool Decorator (
with_gcp_config)Instead of manually initialising GCP clients inside every single tool, this decorator:
instance = MyTool(project=...)inside every single function.enable_agentsflag) so it can't be accidentally bypassed.Output
| model | selector | Job ID | sources | slot (ms) | Bytes | Recommendation