{"id":36937636,"url":"https://github.com/inference-gateway/infer-action","last_synced_at":"2026-06-08T23:01:09.430Z","repository":{"id":326826948,"uuid":"1104598747","full_name":"inference-gateway/infer-action","owner":"inference-gateway","description":"Github action for the Infer CLI","archived":false,"fork":false,"pushed_at":"2026-06-05T17:24:32.000Z","size":2024,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-05T19:17:26.037Z","etag":null,"topics":["a2a","a2a-protocol","actions","agent","coding"],"latest_commit_sha":null,"homepage":"https://docs.inference-gateway.com/github-action/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inference-gateway.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-26T12:33:16.000Z","updated_at":"2026-06-05T17:24:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/inference-gateway/infer-action","commit_stats":null,"previous_names":["inference-gateway/infer-action"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/inference-gateway/infer-action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inference-gateway%2Finfer-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inference-gateway%2Finfer-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inference-gateway%2Finfer-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inference-gateway%2Finfer-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inference-gateway","download_url":"https://codeload.github.com/inference-gateway/infer-action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inference-gateway%2Finfer-action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34083848,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a2a","a2a-protocol","actions","agent","coding"],"created_at":"2026-01-13T10:09:34.124Z","updated_at":"2026-06-08T23:01:09.411Z","avatar_url":"https://github.com/inference-gateway.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Infer Agent Action\n\nA GitHub Action that automatically runs the\n[Infer CLI](https://github.com/inference-gateway/cli) agent on GitHub issues.\nThe agent can analyze issues, provide solutions, and post results as comments\nusing various AI providers (Anthropic, OpenAI, Google, Ollama, Ollama Cloud,\nGroq, Moonshot and more).\n\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n[![GitHub release](https://img.shields.io/github/v/release/inference-gateway/infer-action)](https://github.com/inference-gateway/infer-action/releases)\n[![GitHub issues](https://img.shields.io/github/issues/inference-gateway/infer-action)](https://github.com/inference-gateway/infer-action/issues)\n\n\u003c/div\u003e\n\n## Features\n\n- 🤖 Automatically trigger AI agents on GitHub issues\n- 🔄 Support for multiple AI providers (Anthropic Claude, OpenAI GPT, Google Gemini)\n- 🎯 Customizable trigger phrases\n- 🔀 Dynamic model selection - override the default model per-issue or per-comment\n- 📝 Automatic comment posting with results and progress tracking\n- 🔀 Automatic pull request creation when file changes are made\n- ⚙️ Configurable agent behavior and iteration limits\n- 🚀 Easy setup with minimal configuration\n\n## Quick Start\n\nCreate a workflow file (e.g., `.github/workflows/infer-agent.yml`):\n\n```yaml\nname: Infer Agent\n\non:\n  issues:\n    types:\n      - opened\n      - edited\n  issue_comment:\n    types:\n      - created\n\njobs:\n  run-agent:\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: actions/checkout@v6.0.2\n\n      - uses: inference-gateway/infer-action@main\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          model: deepseek/deepseek-v4-flash\n          deepseek-api-key: ${{ secrets.DEEPSEEK_API_KEY }}\n```\n\n## Usage Examples\n\n### Basic Usage with Anthropic Claude\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: deepseek/deepseek-v4-flash\n    deepseek-api-key: ${{ secrets.DEEPSEEK_API_KEY }}\n```\n\n### Using OpenAI GPT-4\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: openai/gpt-4\n    openai-api-key: ${{ secrets.OPENAI_API_KEY }}\n```\n\n### Using Google Gemini\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: google/gemini-pro\n    google-api-key: ${{ secrets.GOOGLE_API_KEY }}\n```\n\n### Custom Trigger Phrase\n\nBy default, the action triggers on `@infer`. You can customize this:\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: anthropic/claude-sonnet-4\n    anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}\n    trigger-phrase: \"@ai-helper\"\n```\n\n### Dynamic Model Selection\n\nYou can override the default model on a per-issue or per-comment basis using the `/model`\nparameter. This allows you to experiment with different models without changing your workflow\nconfiguration.\n\n**Usage in issue comments:**\n\n```text\n@infer /model deepseek/deepseek-v4-flash can you explain what this project does?\n```\n\n**Usage in issue bodies:**\n\n```text\n@infer /model openai/gpt-4 please analyze this bug and suggest a fix\n```\n\n**Supported model format:**\n\nThe model parameter accepts any valid model identifier in the format `provider/model-name`, such as:\n\n- `anthropic/claude-sonnet-4`\n- `openai/gpt-4`\n- `google/gemini-pro`\n- `deepseek/deepseek-v4-flash`\n- `ollama_cloud/qwen3-coder:480b`\n- `moonshot/kimi-k2`\n\nThe model specified in the workflow configuration serves as the default when no `/model` parameter is provided.\n\n### Limiting Agent Iterations\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: deepseek/claude-sonnet-4\n    deepseek-api-key: ${{ secrets.DEEPSEEK_API_KEY }}\n    max-turns: 30\n```\n\n### Using Specific CLI Version\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: anthropic/claude-sonnet-4\n    anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}\n    version: v0.112.2\n```\n\n### Adding Custom Instructions\n\nThe action includes comprehensive default instructions for the agent that cover:\n\n- Creating and posting a plan with todos\n- Real-time progress updates\n- Making file changes\n- Creating branches and commits\n- Opening pull requests\n- Posting results with PR links\n\nYou can provide **additional** project-specific instructions that will be appended to the defaults:\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: deepseek/deepseek-v4-flash\n    deepseek-api-key: ${{ secrets.DEEPSEEK_API_KEY }}\n    custom-instructions: |\n      - Always run tests before committing changes\n      - Follow the project's coding style guide in CONTRIBUTING.md\n      - Add JSDoc comments for any new functions\n      - Update relevant documentation when making changes\n```\n\nThe custom instructions enhance the agent's behavior without replacing the core workflow.\n\n### Loading Agent Skills\n\nInfer skills are reusable Markdown packages (a folder with a `SKILL.md` frontmatter file) that the agent\nloads on startup and invokes by name. The action can install skills before the agent runs:\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: anthropic/claude-sonnet-4\n    anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}\n    skills: |\n      maintainer\n      # acme/internal-comms\n      # https://github.com/anthropics/skills/tree/main/skills/pdf\n```\n\nEach line is passed directly to `infer skills install`, which accepts three forms:\n\n- **Bare skill name** - `maintainer` resolves to `inference-gateway/skills/skills/maintainer/`\n- **`\u003corg\u003e/\u003cskill\u003e` pair** - `acme/internal-comms` resolves to `acme/skills/skills/internal-comms/`\n- **Full GitHub tree URL** - for any layout, branch, or tag: `https://github.com/\u003cowner\u003e/\u003crepo\u003e/tree/\u003cref\u003e/\u003cpath\u003e`\n\nLines beginning with `#` are treated as comments. Blank lines are ignored.\n\n**Notes:**\n\n- Skills are installed to `~/.infer/skills/` on the runner (`--user --overwrite`). Your working tree is not modified.\n- Providing any skill automatically sets `INFER_AGENT_SKILLS_ENABLED=true` for the agent run.\n- Skill discovery and the first-party skill catalog live at [inference-gateway/skills](https://github.com/inference-gateway/skills).\n- Skill installs are authenticated with the `github-token` you provide (passed to the CLI as `GITHUB_TOKEN`), so they use the 5,000 requests/hour authenticated limit\n  and can reach private repositories the token can access. Without a token, GitHub's 60 requests/hour-per-IP anonymous limit applies and is easily exhausted on shared CI runners.\n\n### Bash Commands (allow-list)\n\nThe agent runs bash through the Infer CLI's allow-list. As of CLI **v0.121.0** the **CLI owns a\ncurated read-only baseline** that every run inherits - you no longer configure it here. It\ncovers file reads (`ls`, `find`, `head`, `tail`, `wc`, `sort`, `uniq`, `tree`), `echo`, `task`,\n`make`, read-only git (`git status|branch|log|diff|remote|show`), and read-only `gh` -\n**including `gh project list|view|item-list|field-list`** (reading project boards). It contains\nno writes.\n\nOn top of that baseline:\n\n- When git operations are enabled (the default), the action appends exactly the writes its PR\n  workflow needs: `git add/commit/push/checkout/switch/fetch` and `gh pr create`. `gh pr merge`,\n  `gh pr close`, `gh pr edit`, and `gh pr review` are deliberately **never** appended - the\n  agent opens its own PR but a human reviews and merges.\n- Use **`bash-allow-append`** to add your project's tooling. Entries are **Go regexes**, each\n  anchored to the whole command, comma- or newline-separated:\n\n```yaml\n- uses: inference-gateway/infer-action@v1\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: anthropic/claude-sonnet-4\n    anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}\n    # Add project tooling on top of the CLI baseline + the action's git-write append:\n    bash-allow-append: \"npm( .*)?,pnpm( .*)?,node( .*)?,go test( .*)?\"\n```\n\n\u003e **Migrating from older versions (pre-CLI v0.121.0):** the `bash-whitelist-commands`,\n\u003e `bash-whitelist-commands-append`, `bash-whitelist-patterns`, and\n\u003e `bash-whitelist-patterns-append` inputs are **removed**, along with the action's own default\n\u003e command/pattern lists - the CLI now owns the read-only baseline. Move everything you used to\n\u003e append into the single **`bash-allow-append`** input, and rewrite each entry as a **regex\n\u003e anchored to the whole command**: a bare command name no longer matches its arguments, so\n\u003e `npm` becomes `npm( .*)?` and `^npm .*` becomes `npm( .*)?`. To _replace_ the CLI baseline\n\u003e (rather than append to it), configure the CLI's `.infer/config.yaml` directly.\n\n**Security notes:**\n\n- Only allow commands you trust the agent to run.\n- Entries are evaluated as regex (comma- or newline-separated; no commas _inside_ a single\n  pattern).\n- The CLI rejects command chaining, redirects, command substitution, and environment-variable\n  expansion in allowed commands, so an allow entry cannot be widened via `;` / `\u0026\u0026` / `$()` /\n  `\u003e`.\n\n**Example appends:**\n\n- Node.js projects: `bash-allow-append: \"npm( .*)?,pnpm( .*)?,node( .*)?\"`\n- Python projects: `bash-allow-append: \"python3( .*)?,pip( .*)?,pytest( .*)?\"`\n- Build tools: `bash-allow-append: \"cargo( .*)?,cmake( .*)?,mvn( .*)?\"`\n\n### Disabling Git Operations (Comment-Only Mode)\n\nBy default, the agent can create branches, commits, and pull requests. If you want the agent to only analyze\nissues and post comments without making code changes, disable git operations:\n\n```yaml\n- uses: inference-gateway/infer-action@main\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: anthropic/claude-sonnet-4\n    anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}\n    enable-git-operations: false\n```\n\nWhen `enable-git-operations: false`:\n\n- The action does not append the git-write commands or `gh pr create`, so the agent keeps only\n  the CLI's read-only baseline (it can still read with `git log` / `gh ... view`, but cannot\n  commit, push, or open a PR)\n- The agent can only analyze code, provide suggestions, and post comments\n- No branches, commits, or pull requests will be created\n- Useful for advisory-only workflows or testing the action safely\n\n### Direct Prompt (Manual `workflow_dispatch` Runs)\n\nBy default the action triggers from `issues` / `issue_comment` events and reads the\ntask from the issue or comment body. To run the agent against a free-text task with\nno issue or comment - for example from a manual `workflow_dispatch` form - pass the\ntext through `direct-prompt`:\n\n```yaml\nname: Infer (manual)\n\non:\n  workflow_dispatch:\n    inputs:\n      prompt:\n        description: \"Task for the agent to work on\"\n        required: true\n        type: string\n\npermissions:\n  contents: write\n  pull-requests: write\n\njobs:\n  infer:\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: actions/checkout@v6.0.2\n\n      - uses: inference-gateway/infer-action@main\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          model: deepseek/deepseek-v4-flash\n          deepseek-api-key: ${{ secrets.DEEPSEEK_API_KEY }}\n          direct-prompt: ${{ inputs.prompt }}\n```\n\nWhen `direct-prompt` is non-empty:\n\n- The agent runs against that text instead of an issue/comment body, so no `issues`\n  or `issue_comment` event is required - the action works under `workflow_dispatch`\n  (or any event).\n- There is no issue/PR thread to reply to, so the agent commits its work to a new\n  branch and opens a pull request, then the run's result and the PR link are written\n  to the workflow **job summary** (and the PR URL is exposed as the `pr-url` output).\n- All other inputs (`model`, `skills`, `max-turns`, `compact-auto-at`,\n  `bash-allow-append`, provider keys, `debug`, ...) compose as usual. A `/model`\n  override embedded in the prompt is honored, just like in event-driven mode.\n- Leave `direct-prompt` empty (the default) and event-driven behavior is unchanged.\n\nWhen `enable-git-operations: false`, direct-prompt runs in advisory mode: the agent\nonly writes its findings to the job summary (no branch or PR).\n\n## Dry-run / Local Testing\n\nSet `dry-run: true` to run the whole action in a **plan-only** mode — ideal for\ntrying a workflow locally with [`act`](https://github.com/nektos/act) before it\never runs for real:\n\n```yaml\n- uses: ./ # or inference-gateway/infer-action@\u003ctag\u003e\n  with:\n    github-token: ${{ secrets.GITHUB_TOKEN }}\n    model: deepseek/deepseek-v4-flash\n    dry-run: true\n```\n\nIn dry-run the action:\n\n- **Forces the bundled mock agent** — no real CLI install and no provider token,\n  so it composes with any `model` without spending anything.\n- **Simulates every GitHub mutation.** Instead of creating/updating a comment, the\n  eyes reaction, the \"I'm cooking...\" comment, comment zones, or the spinner, it\n  prints a `[dry-run] would ...` line (e.g. `[dry-run] would create a github issue\ncomment on issue #1 (https://github.com/owner/repo/issues/1)`). Secret values are\n  still redacted in the printed bodies.\n- **Prints a DRY RUN banner** with the exact `SYSTEM` / `TASK` / `REMINDER` prompts\n  and the resolved bash allow-list append (the entries the action adds on top of the\n  CLI's read-only baseline) the agent would receive.\n- **Keeps GitHub reads real**, so you see the actual target issue/PR/comment thread.\n  Reads degrade gracefully when no token is available (a public-repo read still\n  works unauthenticated; otherwise it warns and continues with env-derived data).\n\nReady-to-run example workflows and the `task test:issue | test:comment | test:direct`\nhelpers live in [`examples/local/`](examples/local) — see\n[examples/README.md](examples/README.md#testing-locally-with-act).\n\n## Complete Workflow Example\n\n```yaml\nname: Infer Action\n\non:\n  issues:\n    types:\n      - opened\n      - edited\n  issue_comment:\n    types:\n      - created\npermissions:\n  issues: write\n  contents: write\n  pull-requests: write\n\njobs:\n  infer:\n    runs-on: ubuntu-24.04\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6.0.2\n\n      - name: Run Infer Agent\n        uses: inference-gateway/infer-action@main\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          trigger-phrase: \"@infer\"\n          model: anthropic/claude-sonnet-4\n          anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}\n          max-turns: 50\n```\n\n## How It Works\n\n1. **Trigger Detection**: The action monitors issues and comments for your\n   configured trigger phrase (default: `@infer`). Optionally, you can specify\n   a model override using `/model provider/model-name` in the trigger message\n2. **Skill Loading** (optional): If the `skills` input lists any skills, they\n   are installed into the runner's user-global skill directory (`~/.infer/skills/`)\n   and enabled for the agent\n3. **Plan Creation**: The agent uses TodoWrite to track its plan; the action's\n   runner mirrors the todos to the issue comment in real time as the agent\n   makes progress\n4. **Agent Execution**: The agent runs with your specified model (or the\n   override model if provided). For code-change requests, the agent creates\n   the `fix/issue-{number}` working branch and pushes it _before_ any file\n   edits, then commits and pushes after each completed todo so partial work\n   survives even if the run is cut short. The runner injects a periodic\n   reminder to nudge the agent to keep pushing\n5. **Pull Request Creation**: The agent opens its own pull request with\n   `gh pr create` once its work is committed and pushed, writing a real\n   description of the changes. After the agent exits, the runner looks up the\n   open PR for the branch and adds its URL to the issue comment. The agent is\n   blocked from merging, closing, editing, or reviewing PRs\n6. **Result Posting**: The action posts a final summary to the same issue\n   comment with:\n   - Status icon (success / failure) and exit code\n   - The agent's final response, shown as a visible (non-collapsed) section\n     directly under the status header\n   - The model that was used\n   - Token usage for the run (prompt / completion / total, plus request count)\n   - Per-session cost for the run (input / output / total), when the CLI reports pricing\n   - Total tool calls made, with the run's success rate\n   - Any failed tool calls (collapsed)\n   - The tail of the agent transcript (collapsed)\n\n## Pull Request Workflow\n\nWhen the agent needs to make code changes to resolve an issue, the agent owns\nthe whole git/PR flow; the runner only surfaces the result:\n\n1. **Agent creates the working branch** `fix/issue-{number}` and pushes it\n   _before_ any file edits - this is the first thing the agent does for any\n   code-change request, so partial progress is recoverable if the run ends\n   early\n2. **Agent commits and pushes after each completed todo** - using\n   Conventional Commits - rather than batching everything to the end, after\n   running the repo's own checks (lint / format / tests) and fixing failures\n3. **Agent opens the pull request** with `gh pr create` once its work is\n   pushed, writing the title and a real description (`Resolves #{number}` plus\n   a summary of the changes)\n4. **Runner links the PR** in the issue comment by looking up the open PR for\n   the branch after the agent exits. The runner does not open or merge PRs; if\n   the agent did not open one, there is simply nothing to link\n\nThe runner is ephemeral: the branch-first / commit-per-todo discipline is what\nmakes the workflow resilient to mid-run termination, max-turns timeouts, and\nprovider errors. Because CI runs only _after_ the job ends, the agent runs the\nrepo's checks locally before committing rather than relying on CI feedback it\ncan't see.\n\n### Required Permissions\n\nFor the pull request workflow to work, your workflow must have these permissions:\n\n```yaml\npermissions:\n  issues: write # Post comments and read issue details\n  contents: write # Create branches and commit changes\n  pull-requests: write # Create pull requests\n```\n\n## Inputs\n\n| Input                   | Description                                                                                                                                                                                   | Required | Default    |\n| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ---------- |\n| `github-token`          | GitHub token for API access                                                                                                                                                                   | Yes      | -          |\n| `github-app-slug`       | Slug of the GitHub App whose bot identity authors the agent's commits (e.g. `infer-bot`); resolved via `GET /users/{slug}[bot]`. Falls back to `github-actions[bot]` when empty or on failure | No       | `''`       |\n| `trigger-phrase`        | Phrase to trigger the agent                                                                                                                                                                   | No       | `@infer`   |\n| `direct-prompt`         | Free-text task to run directly (bypasses issue/comment triggers; enables `workflow_dispatch` runs)                                                                                            | No       | `''`       |\n| `model`                 | AI model to use                                                                                                                                                                               | Yes      | -          |\n| `version`               | Infer CLI version to install                                                                                                                                                                  | No       | `v0.121.0` |\n| `anthropic-api-key`     | Anthropic API key                                                                                                                                                                             | No\\*     | -          |\n| `openai-api-key`        | OpenAI API key                                                                                                                                                                                | No\\*     | -          |\n| `google-api-key`        | Google API key                                                                                                                                                                                | No\\*     | -          |\n| `deepseek-api-key`      | DeepSeek API key                                                                                                                                                                              | No\\*     | -          |\n| `groq-api-key`          | Groq API key                                                                                                                                                                                  | No\\*     | -          |\n| `mistral-api-key`       | Mistral API key                                                                                                                                                                               | No\\*     | -          |\n| `cloudflare-api-key`    | Cloudflare API key                                                                                                                                                                            | No\\*     | -          |\n| `cohere-api-key`        | Cohere API key                                                                                                                                                                                | No\\*     | -          |\n| `ollama-api-key`        | Ollama API key                                                                                                                                                                                | No\\*     | -          |\n| `ollama-cloud-api-key`  | Ollama Cloud API key                                                                                                                                                                          | No\\*     | -          |\n| `moonshot-api-key`      | Moonshot API key                                                                                                                                                                              | No\\*     | -          |\n| `max-turns`             | Maximum agent iterations                                                                                                                                                                      | No       | `50`       |\n| `custom-instructions`   | Additional instructions appended to default behavior                                                                                                                                          | No       | `''`       |\n| `skills`                | Newline-separated list of skills installed via `infer skills install`. Auto-enables skills.                                                                                                   | No       | `''`       |\n| `bash-allow-append`     | Go regex entries appended to the CLI's read-only bash allow-list (e.g., `npm( .*)?,pnpm( .*)?`); each is anchored to the whole command. See [Bash Commands](#bash-commands-allow-list)        | No       | `''`       |\n| `web-fetch-domains`     | Domains the WebFetch tool may use; written to `tools.web_fetch.allowed_domains` (replaces the CLI default). Empty = `github.com,raw.githubusercontent.com,api.github.com`                     | No       | `''`       |\n| `enable-git-operations` | Enable git operations and PR creation. Set to `false` for comment-only mode                                                                                                                   | No       | `true`     |\n| `debug`                 | Enable debug logs and stdout stream events (reminder injection, compaction triggers)                                                                                                          | No       | `false`    |\n| `compact-auto-at`       | Auto-compaction threshold as % of model context window. Valid range 20-100                                                                                                                    | No       | `50`       |\n| `dry-run`               | Plan-only local-testing mode: forces the bundled mock agent, simulates every GitHub mutation (`[dry-run] would ...`), prints the SYSTEM/TASK/REMINDER prompts and bash allow-list; reads run  | No       | `false`    |\n| `mock-agent-scenario`   | Mock scenario the bundled mock agent runs when `dry-run: true` - `happy`, `failures`, `no-todos`, or `empty`                                                                                  | No       | `happy`    |\n\n\\* Required if using the corresponding provider\n\n## Outputs\n\n| Output                    | Description                                              |\n| ------------------------- | -------------------------------------------------------- |\n| `result`                  | Human-readable result message                            |\n| `exit-code`               | Exit code from the agent command                         |\n| `pr-url`                  | URL of the pull request the agent opened (empty if none) |\n| `failed-tool-calls-count` | Number of failed tool calls detected in agent output     |\n| `total-tool-calls-count`  | Total number of tool calls made by the agent             |\n\n## Supported Models\n\n- **Anthropic**: `anthropic/claude-sonnet-4`, `anthropic/claude-opus-4`, etc.\n- **OpenAI**: `openai/gpt-4`, `openai/gpt-4-turbo`, `openai/gpt-3.5-turbo`\n- **Google**: `google/gemini-pro`, `google/gemini-ultra`\n- **Moonshot**: `moonshot/kimi-k2`, `moonshot/kimi-k2-thinking`, `moonshot/moonshot-v1-128k`\n\n## Security Best Practices\n\n1. **Never commit API keys** - Always use GitHub Secrets\n2. **Use minimal permissions** - Only grant necessary workflow permissions\n3. **Review agent outputs** - Monitor what the agent posts to your issues\n4. **Set appropriate max-turns** - Prevent runaway execution\n5. **Carefully extend the bash allow-list** - Only add commands you trust the AI to execute via\n   `bash-allow-append`. The CLI's read-only baseline is safe by default\n\n## Setting Up Secrets\n\n1. Go to your repository settings\n2. Navigate to \"Secrets and variables\" → \"Actions\"\n3. Click \"New repository secret\"\n4. Add your API key(s):\n   - `ANTHROPIC_API_KEY`\n   - `OPENAI_API_KEY`\n   - `GOOGLE_API_KEY`\n\n## Troubleshooting\n\n### Action doesn't trigger\n\n- Ensure your trigger phrase matches exactly (case-sensitive)\n- Check that the workflow has proper event triggers (`issues`, `issue_comment`)\n- Verify workflow permissions include `issues: write`\n\n### Agent fails to run\n\n- Check that the correct API key is provided for your chosen model\n- Verify the model name is correct\n- Review the action logs for specific error messages\n\n### Comments not posting\n\n- Ensure `github-token` has write permissions\n- Check that the workflow has `issues: write` permission\n\n### Pull requests not being created\n\n- Verify the workflow has `contents: write` permission for branch creation\n- Ensure the workflow has `pull-requests: write` permission\n- Check that the repository allows pull requests from workflows\n- Review the action logs for git/gh CLI errors\n\n## License\n\nApache-2.0\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Support\n\n- [Report Issues](https://github.com/inference-gateway/infer-action/issues)\n- [CLI Documentation](https://docs.inference-gateway.com/cli)\n- [Inference Gateway](https://github.com/inference-gateway/inference-gateway)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finference-gateway%2Finfer-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finference-gateway%2Finfer-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finference-gateway%2Finfer-action/lists"}