Skip to content
Report library
Purpose / Other

Lark Approval Skill Security Audit

What the author says it does (original text)

飞书审批:查询和处理审批待办/已办/实例,搜索可发起审批定义、查看定义详情并发起原生审批实例。当用户要处理审批任务、查看审批实例、搜索或发起审批时使用。审批待办不是飞书任务;非审批类待办走 lark-task。不负责创建审批定义;三方审批定义不走原生提单。

Independent security check

No obvious risks found in this check

Files checked
17
Risks found
0
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.No risks found
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.No risks found
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.No risks found
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

5 instruction sections

The Skill uses the current Lark user's identity to query approval tasks, instances, and definitions, and can approve, reject, transfer, add reviewers, roll back, remind, cancel, or add CC recipients. These actions affect the user's real approval workflows.

View source
SKILL.md:37In the instructions
| 发起原生审批实例/提交请假审批/提交报销审批/创建审批实例 | `instances create` | [`lark-approval-initiate.md`](references/lark-approval-initiate.md)             || 查/搜待办、已办 | `tasks query`(`topic`:1待办 2已办 17未读 18已读) | [`lark-approval-tasks-query.md`](references/lark-approval-tasks-query.md)       || 看表单/进度/当前节点 | `instances get` | [`lark-approval-instances-get.md`](references/lark-approval-instances-get.md)   || 同意审批 | `tasks approve` | [`lark-approval-tasks-approve.md`](references/lark-approval-tasks-approve.md)   || 拒绝审批 | `tasks reject` | [`lark-approval-tasks-reject.md`](references/lark-approval-tasks-reject.md)     || 转交审批 | `tasks transfer` | [`lark-approval-tasks-transfer.md`](references/lark-approval-tasks-transfer.md) || 加签审批 | `tasks add_sign` | [`lark-approval-tasks-add-sign.md`](references/lark-approval-tasks-add-sign.md) || 退回审批 | `tasks rollback` | [`lark-approval-tasks-rollback.md`](references/lark-approval-tasks-rollback.md) || 催办审批 | `tasks remind` | [`lark-approval-tasks-remind.md`](references/lark-approval-tasks-remind.md)     || 撤回已发起审批 | `instances cancel` | [`lark-approval-instances-cancel.md`](references/lark-approval-instances-cancel.md) || 给审批实例追加抄送 | `instances cc` | [`lark-approval-instances-cc.md`](references/lark-approval-instances-cc.md)     || 按定义/关键词查已发起审批 | `instances initiated` | [`lark-approval-instances-initiated.md`](references/lark-approval-instances-initiated.md) |

Instance details may contain initiator and department identifiers, the full form, current nodes, tasks, operation history, and comments. Viewing details can therefore expose HR, financial, or other business-sensitive information to the agent, although the instructions limit this lookup to when the user explicitly asks for such details.

View source
references/lark-approval-instances-get.md:61In the instructions
| `definition_name` | 审批名称 || `user_id` | 发起审批的用户 ID || `department_id` | 发起人所在部门 ID || `status` | 审批实例状态,见下方“status 枚举” || `reverted` | 单据是否已被撤销 || `start_time` | 审批创建时间 || `end_time` | 审批完成时间,未完成时通常为 `0` || `form` | 表单数据,JSON 字符串 || `current_nodes` | 当前审批节点列表 || `tasks` | 审批任务列表 || `operation_records` | 审批动态,例如通过、拒绝、转交、加签、回退、撤回、抄送 || `comments` | 评论列表 |
SKILL.md:56In the instructions
### 1) 先拿最小必要信息,再执行- 目标只是处理待办时,优先 `tasks query` 获取 `instance_code` + `task_id`- **只有**用户明确要看详情、当前节点、表单内容、流程进度时,才调用 `instances get`- 用户已经明确给出 `instance_code` / `task_id` 时,不要先查列表再过滤

Before creating an approval, the Skill must verify the definition, form structure, and node requirements. It must not choose among multiple candidates for the user, and must obtain confirmation of the final definition, form values, and approver/CC assignments before submission. Third-party approvals are handled by returning their launch link rather than calling the native creation API.

View source
references/lark-approval-initiate.md:5In the instructions
- **原生审批提单如果用户未明确给出 `approval_code`,必须固定走 `approvals search` -> `approvals get` -> `instances create`** 不要跳过 `get` 直接拼请求。- **原生审批提单如果用户明确给出 `approval_code`,固定走 `approvals get` -> `instances create`** 不要跳过 `get` 直接拼请求。- **`is_external=true` 的定义是三方定义。** 这类定义不要调用 `instances create`,应优先使用 `create_link`。- **所有人员类参数默认使用 `open_id`。** 若用户给的是姓名、邮箱或其他身份,先用 [`../../lark-contact/SKILL.md`](../../lark-contact/SKILL.md) 解析。- **先读控件参数 reference 和值来源 reference,再读本文里的创建参数规则。** 提单前必须先阅读 [`lark-approval-instance-form-control-parameters.md`](./lark-approval-instance-form-control-parameters.md) 和 [`lark-approval-instance-value-sourcing.md`](./lark-approval-instance-value-sourcing.md)。- **`approvals.get.form` 不是创建 payload 的原样模板。** 它主要用于识别控件 `id`、`type`、选项值范围和明细子控件结构;真正的 `instances create --data.form` 中,控件 `value` 结构以 [`lark-approval-instance-form-control-parameters.md`](./lark-approval-instance-form-control-parameters.md) 为准。- **节点参数只从 `node_list` 和本文里的节点参数规则里取。** 节点 key 必须来自定义详情返回的节点标识;审批人/抄送人列表传用户 ID 时,不要混用姓名或其他身份标识。- **看到 `need_approver=true` 就说明该节点需要发起人补充审批人。** 如果 `approver_chosen_multi=false`,该节点只允许一个 `open_id`。- **创建实例前先确认。** `approval instances create` 是写操作,执行前,让用户确认最终定义、表单值和节点参数;真正执行时显式传 `--yes`。
references/lark-approval-approvals-search.md:60In the instructions
- **这是发起审批工作流的第一步。** 标准顺序是:`approvals search` -> `approvals get` -> `instances create`。- **搜索结果为空时,不要猜。** 直接告诉用户当前关键词下没有可发起定义,并建议用户换关键词。- **命中多个结果时,不要替用户拍板。** 先把候选定义列出来,让用户选择目标审批定义。- **`is_external=true` 时不要调用 `approval instances create`。** 这类定义属于三方审批,优先返回 `create_link` 并说明需要通过链接发起。- **只有 `is_external=false` 的原生定义,才继续 `approvals get`。**- **如果用户已经明确给出 `approval_code`,不要再 search。** 直接执行 `approval approvals get`。

Writes such as approval, rejection, transfer, rollback, and cancellation are marked high risk and require a verified target plus explicit user agreement before supplying the confirmation flag. On failure, the Skill limits retries to one and permits only one additional status check, reducing the risk of repeated workflow changes.

View source
references/lark-approval-tasks-approve.md:4In the instructions
同意一个审批任务(用户级写操作)。通常先通过 `tasks query` 拿到 `task_id` 和 `instance_code`,必要时再用 `instances get` 查看详情,然后再执行同意。> [!CAUTION]> 这是 **high-risk-write** 写操作。建议先用 `--dry-run` 预览;真正执行时,如果用户已明确同意审批且目标任务无误,再带 `--yes` 运行。不要在未获用户明确同意时静默追加 `--yes`。需要的 scopes: ["approval:task:write"]
references/lark-approval-instances-cancel.md:4In the instructions
撤回一个已发起的审批实例(用户级写操作)。通常先通过 `instances initiated`、`tasks query` 或 `instances get` 确认目标审批实例,拿到 `instance_code` 后再执行撤回。> [!CAUTION]> 这是 **high-risk-write** 写操作。建议先用 `--dry-run` 预览;真正执行时,如果用户已明确要撤回该审批实例且目标实例无误,再带 `--yes` 运行。不要在未获用户明确同意时静默追加 `--yes`。需要的 scopes: ["approval:instance:write"]
SKILL.md:68In the instructions
### 3) 错误码驱动,而不是盲目重试- 写操作失败后,先看错误码和报错语义,再决定是否补查或结束- **除非错误明确提示可恢复或需要补充参数,否则不要重复刷同一个写操作**- 同一个失败原因不要连续多次重试,避免 token 和耗时失控,最多重试1次
SKILL.md:78In the instructions
1. **先停止盲目重试**,不要连续重复提交相同写操作,最多重试1次2. 优先从以下角度解释:   - 任务可能已被他人处理   - 单据状态已变化,当前动作已不再允许   - 当前用户已不具备该任务的操作资格   - 当前节点或单据状态不支持该操作3. 如需确认,只补 **一次** 状态查询(`tasks query` 或 `instances get`),不要陷入 query/write 循环4. 最终给用户明确结论和下一步建议,而不是继续无意义重试
Start here · InstructionsSKILL.md
lark-approval
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source.

File reference map

References: 19
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records17 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • references/lark-approval-approvals-get.mdFull text included
  • references/lark-approval-approvals-search.mdFull text included
  • references/lark-approval-initiate.mdFull text included
  • references/lark-approval-instances-cancel.mdFull text included
  • references/lark-approval-instances-cc.mdFull text included
  • references/lark-approval-instances-get.mdFull text included
  • references/lark-approval-instances-initiated.mdFull text included
  • references/lark-approval-tasks-add-sign.mdFull text included
  • references/lark-approval-tasks-approve.mdFull text included
  • references/lark-approval-tasks-query.mdFull text included
  • references/lark-approval-tasks-reject.mdFull text included
  • references/lark-approval-tasks-remind.mdFull text included
  • references/lark-approval-tasks-rollback.mdFull text included
  • references/lark-approval-tasks-transfer.mdFull text included
  • references/lark-approval-instance-form-control-parameters.mdFull text included
  • references/lark-approval-instance-value-sourcing.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • references/lark-approval-approvals-get.mdSupporting file
  • references/lark-approval-approvals-search.mdSupporting file
  • references/lark-approval-initiate.mdSupporting file
  • references/lark-approval-instance-form-control-parameters.mdSupporting file
  • references/lark-approval-instance-value-sourcing.mdSupporting file
  • references/lark-approval-instances-cancel.mdSupporting file
  • references/lark-approval-instances-cc.mdSupporting file
  • references/lark-approval-instances-get.mdSupporting file
  • references/lark-approval-instances-initiated.mdSupporting file
  • references/lark-approval-tasks-add-sign.mdSupporting file
  • references/lark-approval-tasks-approve.mdSupporting file
  • references/lark-approval-tasks-query.mdSupporting file
  • references/lark-approval-tasks-reject.mdSupporting file
  • references/lark-approval-tasks-remind.mdSupporting file
  • references/lark-approval-tasks-rollback.mdSupporting file
  • references/lark-approval-tasks-transfer.mdSupporting file

Operations mentioned in code and instructions

Run commands
SKILL.md:89In the instructions
```bashlark-cli approval approvals search --data '{"keyword":"请假"}' --as user
references/lark-approval-approvals-get.md:10In the instructions
```bash# 按 approval_code 查询审批定义详情
references/lark-approval-approvals-get.md:36In the instructions
```bashlark-cli approval approvals get --params '{"approval_code":"<APPROVAL_CODE>"}' --as user
Connect to websites
references/lark-approval-initiate.md:220In the instructions
- instance_code: 19EAC829-F1CB-527F-BE2A-1330422E60C0- instance_link: https://...```
Lines read
2,417
File checksum (to compare versions)
f3798e7f5e5da9049850335eec5721fe8a6f5306b86f92bc234a91237ffc19d5