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.
232name : Pullfrog
333run-name : ${{ inputs.name || github.workflow }}
434on :
@@ -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