Lark Approval Skill Security Audit
What the author says it does (original text)
飞书审批:查询和处理审批待办/已办/实例,搜索可发起审批定义、查看定义详情并发起原生审批实例。当用户要处理审批任务、查看审批实例、搜索或发起审批时使用。审批待办不是飞书任务;非审批类待办走 lark-task。不负责创建审批定义;三方审批定义不走原生提单。
No obvious risks found in this check
- Files checked
- 17
- Risks found
- 0
Inside this skill
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
| 发起原生审批实例/提交请假审批/提交报销审批/创建审批实例 | `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
| `definition_name` | 审批名称 || `user_id` | 发起审批的用户 ID || `department_id` | 发起人所在部门 ID || `status` | 审批实例状态,见下方“status 枚举” || `reverted` | 单据是否已被撤销 || `start_time` | 审批创建时间 || `end_time` | 审批完成时间,未完成时通常为 `0` || `form` | 表单数据,JSON 字符串 || `current_nodes` | 当前审批节点列表 || `tasks` | 审批任务列表 || `operation_records` | 审批动态,例如通过、拒绝、转交、加签、回退、撤回、抄送 || `comments` | 评论列表 |### 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
- **原生审批提单如果用户未明确给出 `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`。- **这是发起审批工作流的第一步。** 标准顺序是:`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
同意一个审批任务(用户级写操作)。通常先通过 `tasks query` 拿到 `task_id` 和 `instance_code`,必要时再用 `instances get` 查看详情,然后再执行同意。> [!CAUTION]> 这是 **high-risk-write** 写操作。建议先用 `--dry-run` 预览;真正执行时,如果用户已明确同意审批且目标任务无误,再带 `--yes` 运行。不要在未获用户明确同意时静默追加 `--yes`。需要的 scopes: ["approval:task:write"]撤回一个已发起的审批实例(用户级写操作)。通常先通过 `instances initiated`、`tasks query` 或 `instances get` 确认目标审批实例,拿到 `instance_code` 后再执行撤回。> [!CAUTION]> 这是 **high-risk-write** 写操作。建议先用 `--dry-run` 预览;真正执行时,如果用户已明确要撤回该审批实例且目标实例无误,再带 `--yes` 运行。不要在未获用户明确同意时静默追加 `--yes`。需要的 scopes: ["approval:instance:write"]### 3) 错误码驱动,而不是盲目重试- 写操作失败后,先看错误码和报错语义,再决定是否补查或结束- **除非错误明确提示可恢复或需要补充参数,否则不要重复刷同一个写操作**- 同一个失败原因不要连续多次重试,避免 token 和耗时失控,最多重试1次1. **先停止盲目重试**,不要连续重复提交相同写操作,最多重试1次2. 优先从以下角度解释: - 任务可能已被他人处理 - 单据状态已变化,当前动作已不再允许 - 当前用户已不具备该任务的操作资格 - 当前节点或单据状态不支持该操作3. 如需确认,只补 **一次** 状态查询(`tasks query` 或 `instances get`),不要陷入 query/write 循环4. 最终给用户明确结论和下一步建议,而不是继续无意义重试File reference map
References: 19Files 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 includedreferences/lark-approval-approvals-get.mdFull text includedreferences/lark-approval-approvals-search.mdFull text includedreferences/lark-approval-initiate.mdFull text includedreferences/lark-approval-instances-cancel.mdFull text includedreferences/lark-approval-instances-cc.mdFull text includedreferences/lark-approval-instances-get.mdFull text includedreferences/lark-approval-instances-initiated.mdFull text includedreferences/lark-approval-tasks-add-sign.mdFull text includedreferences/lark-approval-tasks-approve.mdFull text includedreferences/lark-approval-tasks-query.mdFull text includedreferences/lark-approval-tasks-reject.mdFull text includedreferences/lark-approval-tasks-remind.mdFull text includedreferences/lark-approval-tasks-rollback.mdFull text includedreferences/lark-approval-tasks-transfer.mdFull text includedreferences/lark-approval-instance-form-control-parameters.mdFull text includedreferences/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.mdInstructionsreferences/lark-approval-approvals-get.mdSupporting filereferences/lark-approval-approvals-search.mdSupporting filereferences/lark-approval-initiate.mdSupporting filereferences/lark-approval-instance-form-control-parameters.mdSupporting filereferences/lark-approval-instance-value-sourcing.mdSupporting filereferences/lark-approval-instances-cancel.mdSupporting filereferences/lark-approval-instances-cc.mdSupporting filereferences/lark-approval-instances-get.mdSupporting filereferences/lark-approval-instances-initiated.mdSupporting filereferences/lark-approval-tasks-add-sign.mdSupporting filereferences/lark-approval-tasks-approve.mdSupporting filereferences/lark-approval-tasks-query.mdSupporting filereferences/lark-approval-tasks-reject.mdSupporting filereferences/lark-approval-tasks-remind.mdSupporting filereferences/lark-approval-tasks-rollback.mdSupporting filereferences/lark-approval-tasks-transfer.mdSupporting file
Operations mentioned in code and instructions
Run commands
```bashlark-cli approval approvals search --data '{"keyword":"请假"}' --as user```bash# 按 approval_code 查询审批定义详情```bashlark-cli approval approvals get --params '{"approval_code":"<APPROVAL_CODE>"}' --as userConnect to websites
- instance_code: 19EAC829-F1CB-527F-BE2A-1330422E60C0- instance_link: https://...```- Lines read
- 2,417
- File checksum (to compare versions)
- f3798e7f5e5da9049850335eec5721fe8a6f5306b86f92bc234a91237ffc19d5