Skip to content

Commit 114fc20

Browse files
committed
chore(pullfrog): harden the trial workflow
1 parent 0bcc8ea commit 114fc20

1 file changed

Lines changed: 38 additions & 47 deletions

File tree

‎.github/workflows/pullfrog.yml‎

Lines changed: 38 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,34 @@
11
# PULLFROG ACTION — DO NOT EDIT EXCEPT WHERE INDICATED
2+
#
3+
# Dispatched by Pullfrog's control plane, never by a pull_request event, and always against
4+
# `main` -- so this file governs a trial run only once it is on the default branch, and a
5+
# pull request changing it is not reviewed by its own copy. The same trap
6+
# claude-pr-review.yml carries, for the same reason.
7+
#
8+
# Every deviation from the console-generated file is below, and each one is deliberate:
9+
#
10+
# env: removed entirely The generated file maps ten provider secrets, ANTHROPIC_API_KEY
11+
# among them, which would hand the org secret that gates the
12+
# production reviewer to a third-party agent and let auto-select
13+
# quietly run this trial on Claude. The rest name secrets that do
14+
# not exist, and a workflow env: value *wins* over a
15+
# Pullfrog-stored key -- so an empty mapping would override the
16+
# console's OPENAI_API_KEY and fail every run with "Missing API
17+
# key". The key lives in the Pullfrog console instead, which also
18+
# keeps rotation and model changes off this file.
19+
# push: disabled The trial reviews and does nothing else. Read-only at the
20+
# action, so it holds even if a console toggle flips.
21+
# shell: restricted Already the default for a public repo; stated so it survives
22+
# the repo going private.
23+
# progress_comments: The reviewer next door reads the PR conversation into its
24+
# disabled prompt, where a live task list is context it pays for.
25+
# timeout: 20m A review is not an hour of work; the reviewer beside it is
26+
# capped at 15 minutes.
27+
# checkout pinned This repository pins every action to an exact patch version.
28+
# pullfrog/pullfrog stays on @v0 on the vendor's own advice: the
29+
# action is a bootstrap that floats the agent from npm, so a SHA
30+
# pin freezes only the post-run cleanup step and goes stale into
31+
# runs that fail after the agent has finished its work.
232
name: Pullfrog
333
run-name: ${{ inputs.name || github.workflow }}
434
on:
@@ -18,60 +48,21 @@ jobs:
1848
pullfrog:
1949
runs-on: ubuntu-latest
2050
permissions:
51+
# The only two the action needs: id-token to mint its own short-lived installation
52+
# tokens over OIDC, contents to clone. It never uses this job's GITHUB_TOKEN, so
53+
# nothing here grants it the ability to comment, review, or push.
2154
id-token: write
2255
contents: read
2356
steps:
2457
- name: Checkout code
25-
uses: actions/checkout@v6
58+
uses: actions/checkout@v6.0.2
2659
with:
2760
fetch-depth: 1
2861
- name: Run agent
2962
uses: pullfrog/pullfrog@v0
3063
with:
3164
prompt: ${{ inputs.prompt }}
32-
env:
33-
# add at least one provider API key
34-
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
35-
CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
36-
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
37-
GOOGLE_GENERATIVE_AI_API_KEY:
38-
${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}
39-
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
40-
XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
41-
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
42-
MOONSHOT_API_KEY: ${{ secrets.MOONSHOT_API_KEY }}
43-
OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
44-
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
45-
46-
# for Amazon Bedrock (https://docs.pullfrog.com/bedrock)
47-
# AWS_BEARER_TOKEN_BEDROCK: ${{ secrets.AWS_BEARER_TOKEN_BEDROCK }}
48-
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
49-
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
50-
# AWS_REGION: us-east-1
51-
# BEDROCK_MODEL_ID: <bedrock-model-id>
52-
53-
# for Google Vertex AI (https://docs.pullfrog.com/vertex)
54-
# VERTEX_SERVICE_ACCOUNT_JSON: >-
55-
# ${{ secrets.VERTEX_SERVICE_ACCOUNT_JSON }}
56-
# GOOGLE_CLOUD_PROJECT: my-project
57-
# VERTEX_LOCATION: global
58-
# VERTEX_MODEL_ID: <vertex-model-id>
59-
60-
# for Azure OpenAI (https://docs.pullfrog.com/azure)
61-
# AZURE_RESOURCE_NAME is the <name> in https://<name>.openai.azure.com
62-
# AZURE_DEPLOYMENT is your deployment's name, not the model it serves
63-
# AZURE_RESOURCE_NAME: my-resource
64-
# AZURE_API_KEY: ${{ secrets.AZURE_API_KEY }}
65-
# AZURE_DEPLOYMENT: <deployment-name>
66-
# both limits are required — set them to the real limits of that model
67-
# AZURE_CONTEXT: "400000"
68-
# AZURE_MAX_OUTPUT: "128000"
69-
70-
# for any OpenAI-compatible endpoint — LiteLLM, Cloudflare AI Gateway,
71-
# self-hosted vLLM (https://docs.pullfrog.com/openai-compatible)
72-
# OPENAI_COMPATIBLE_BASE_URL: https://litellm.example.com/v1
73-
# OPENAI_COMPATIBLE_API_KEY: ${{ secrets.OPENAI_COMPATIBLE_API_KEY }}
74-
# OPENAI_COMPATIBLE_MODEL: <model-id>
75-
# both limits are required — set them to the real limits of that model
76-
# OPENAI_COMPATIBLE_CONTEXT: "128000"
77-
# OPENAI_COMPATIBLE_MAX_OUTPUT: "16384"
65+
push: disabled
66+
shell: restricted
67+
progress_comments: disabled
68+
timeout: 20m

0 commit comments

Comments
 (0)