github / github/copilot-cli

`skill` tool intermittently fails in headless `-p` mode: "No model-invocable skills available"

未关闭
#4,838 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

triage
主要语言
Shell
星标
11.2k
派生
1.9k
平均合并
14 小时 16 分钟
30 天内合并 PR
6

描述

Describe the bug

In headless ( copilot -p ... ) mode, the skill tool intermittently fails to resolve a skill that is simultaneously listed — with full name and description — in that same request's  <available_skills>  system-prompt block. The error is not "skill X not found among Y available skills" but the more absolute:

Skill "" not found. No model-invocable skills available.

This indicates the tool-call-time invocable-skill registry is empty even though prompt-construction-time skill discovery succeeded moments earlier in the same process. Failures are intermittent — the same skill succeeds on some invocations and fails on others — and once a failure occurs, subsequent headless invocations (different skills, 6–90s spacing, with/without  --available-tools=skill ) keep failing for an extended window (minutes to, in one earlier observation, ~2 days) before recovering. Interactive-mode invocations of the same skills, same environment, succeeded reliably throughout.

Not explained by skill symlink type (tested both relative and absolute symlink targets under  ~/.copilot/skills  — both fail identically once in a bad window), and the skill has no  disable-model-invocation / allow_implicit_invocation: false  policy set.

Prior art checked, not duplicates: #4438 and #4451 (skills excluded via  disable-model-invocation  policy — not applicable here), #4401 ( ~/.agents/skills  unsupported discovery path — our skills are under the supported  ~/.copilot/skills ).

Affected version

1.0.83

Steps to reproduce the behavior
  1. Install a user-level skill at  ~/.copilot/skills//SKILL.md  (supported path, no  disable-model-invocation  policy).
  2. Run:
    copilot -p "Use the skill tool to load the skill named and report the first 6 words of its description." --no-ask-user --log-level debug --log-dir /tmp/debug
  3. Repeat several times in quick succession (some spaced 6–90s apart).
  4. Inspect  /tmp/debug/process-*.log : the system prompt sent to the model correctly contains the skill under  <available_skills> , but the tool-call response for that same skill name is:
    Skill "" not found. No model-invocable skills available.
Expected behavior

The invocable-skill registry checked at tool-call time should stay consistent with the skill listing rendered into the system prompt for the same request — a correctly installed, policy-unrestricted, supported-path skill should not intermittently disappear from resolution.

Additional context

• OS: macOS (darwin-arm64)
• Only reproduces in headless  -p  mode; interactive mode is unaffected
• Impact: automation/headless workflows depending on the  skill  tool cannot assume it will resolve, even for a correctly installed skill

Reproduced in a fully isolated  COPILOT_HOME  profile (no custom hooks, no pre-existing skills/config/logs) with a single freshly created test skill — ruling out any local configuration, hook, or skill-content cause.

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

首先,使用文档中记录的 copilot -p 命令和 --log-dir /tmp/debug,通过 ~/.copilot/skills//SKILL.md 重现问题。将 <available_skills> system-prompt 块与 /tmp/debug/process-*.log 中的工具调用结果进行比较;当受支持且不受 policy 限制的 Skills 在重复的 headless 调用中始终得到一致解析时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
shell
领域
cli
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
活跃
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。