Context
Gitea's action.yml currently pins the external action anthropics/claude-code-base-action@v0.0.63 to run Claude. That external repo has been frozen since Aug 2025 — v0.0.63 is the latest release. Upstream's active base-action work now happens inside the monorepo subdirectory ./base-action/ (Agent SDK ^0.2.117, as of v1.0.103).
Gitea's ./base-action/ directory is kept in sync with upstream via the routine merge flow (we already pick up its version bumps). But we don't use it — the Run Claude Code step still invokes the external pinned action.
Why switch
Switching to uses: ./base-action would unlock these action inputs that are currently plumbed as env vars but inert on Gitea:
show_full_output — full JSON output dump
plugins + plugin_marketplaces — Claude Code plugin install
display_report — GitHub Step Summary rendering
Why not rushed
This is architecturally different, not a patch bump. The local ./base-action/ has a different input shape:
| v0.0.63 (current external pin) |
./base-action/ (monorepo) |
Separate inputs: max_turns, timeout_minutes, model, mcp_config, system_prompt, append_system_prompt, fallback_model, ... |
Single claude_args string (all CLI options packed) |
Switching requires:
- Refactor
src/entrypoints/prepare.ts to construct a claude_args string from Gitea's existing individual inputs.
- Rewrite the
Run Claude Code step in action.yml from uses: anthropics/claude-code-base-action@v0.0.63 → uses: ./base-action.
- Likely add a compat shim for Gitea users whose workflows pass the individual inputs directly (otherwise they break).
- Commit to keeping
./base-action/ in sync with upstream on future merges (already happening de facto, but would become load-bearing).
Estimated scope: ~50–100 lines of code + tests + migration notes.
When to prioritize
Per codex-cli recommendation during the v1.0.103 sync decision (commit 0542de9):
B is worthwhile, but it is not a same-day follow-on to an upstream patch bump. It changes execution shape, expands the compatibility surface, and creates migration/maintenance obligations for existing Gitea workflows. That is the kind of change a conservative maintainer should do intentionally, behind a separate branch/PR, with regression coverage and a compatibility policy.
Flip the switch when one of the triggers fires:
Acceptance criteria (when executed)
Related
Context
Gitea's
action.ymlcurrently pins the external actionanthropics/claude-code-base-action@v0.0.63to run Claude. That external repo has been frozen since Aug 2025 — v0.0.63 is the latest release. Upstream's active base-action work now happens inside the monorepo subdirectory./base-action/(Agent SDK^0.2.117, as of v1.0.103).Gitea's
./base-action/directory is kept in sync with upstream via the routine merge flow (we already pick up its version bumps). But we don't use it — theRun Claude Codestep still invokes the external pinned action.Why switch
Switching to
uses: ./base-actionwould unlock these action inputs that are currently plumbed as env vars but inert on Gitea:show_full_output— full JSON output dumpplugins+plugin_marketplaces— Claude Code plugin installdisplay_report— GitHub Step Summary renderingWhy not rushed
This is architecturally different, not a patch bump. The local
./base-action/has a different input shape:./base-action/(monorepo)max_turns,timeout_minutes,model,mcp_config,system_prompt,append_system_prompt,fallback_model, ...claude_argsstring (all CLI options packed)Switching requires:
src/entrypoints/prepare.tsto construct aclaude_argsstring from Gitea's existing individual inputs.Run Claude Codestep inaction.ymlfromuses: anthropics/claude-code-base-action@v0.0.63→uses: ./base-action../base-action/in sync with upstream on future merges (already happening de facto, but would become load-bearing).Estimated scope: ~50–100 lines of code + tests + migration notes.
When to prioritize
Per codex-cli recommendation during the v1.0.103 sync decision (commit
0542de9):Flip the switch when one of the triggers fires:
show_full_output/plugins/display_reporton Gitea./base-action/(not backported to v0.0.63)./base-action/deltas we're ignoringAcceptance criteria (when executed)
./base-action/used viauses: ./base-actioninaction.ymlclaude_argsconstruction inprepare.tsproduces same CLI invocation as current pinned-action path (regression tests)max_turns,timeout_minutes,model,mcp_config,system_prompt,append_system_prompt,fallback_model) still work — either passed through or documented migration pathshow_full_output,plugins,plugin_marketplaces,display_reportinputs become live (currently stubbed as env vars)claude_argsconstructionRelated
19d15d0(merge) →0542de9(parity with v1.0.103)classify_inline_commentsport: needs Gitea-native rewrite (reviews-grouped semantics) — separate future work