宽泛或批量查询可能暴露超出当前任务所需的同事资料
原文依据:6 处`+search-user` 不仅能按姓名查询,还允许最多 100 个 open_id 的批量回填,以及不带关键词、仅靠筛选条件枚举“聊过的离职同事”。返回字段可包括个人邮箱、企业邮箱、部门、会话 ID、个性签名和近期联系提示。虽然结果受当前账号可见范围约束,但 Skill 没有要求仅请求或展示完成当前任务所必需的字段。
若代理在共享屏幕、日志或对话中输出完整结果,可能向旁观者或后续系统披露同事身份、联系方式、组织关系、离职状态和联系历史。
该风险有源码支持。此 Skill 明确允许批量查询最多 100 个 open_id,也给出无关键词枚举“聊过且已离职同事”的命令;结果字段包括邮箱、部门、P2P 会话 ID、签名和近期联系提示。这些功能符合通讯录查询目的,也受当前身份可见范围限制,但文档没有要求按当前任务最小化查询或展示字段。因此在代理采用宽泛筛选或批量回填时,可能向用户或后续上下文暴露不必要的同事资料。用户可要求作者加入最小字段输出、禁止无关键词枚举,并在批量查询前确认范围。
`--query` / `--queries` / `--user-ids` / bool filter 至少传一个。bool filter 显式传 `=false` 会报错——不传等于不过滤。| Flag | 作用 ||---|---|| `--query <text>` | 关键词(姓名 / 邮箱 / 手机号),≤ 50 rune || `--queries <csv>` | 多个关键词并行搜,**最多 20 条**;与 `--query` / `--user-ids` 互斥;输出新 shape(见下) || `--user-ids <csv>` | open_id 列表,≤ 100;支持 `me` 表示自己;与 `--query` 同传时把搜索范围限定在该集合 || `--has-chatted` | 仅搜聊过天的 || `--has-enterprise-email` | 仅搜有企业邮箱的 || `--exclude-external-users` | 仅搜同租户(排除外部联系人) || `--left-organization` | 仅搜已离职的 || `--lang <locale>` | 覆盖 `localized_name` 的语种(如 `zh_cn` / `en_us` / `ja_jp`) |查看另外 5 个位置
# filter-only 枚举:列出所有"聊过天的离职同事"(无关键词)lark-cli contact +search-user --has-chatted --left-organization```| `localized_name` | string | 按 `--lang` / brand 选出的展示名 | 始终非空(兜底为 open_id) || `email` | string | 个人邮箱 | 可能为空 || `enterprise_email` | string | 企业邮箱 | 可能为空 || `is_activated` | bool | 是否已激活飞书账号(未激活也可投递消息,但用户可能看不到) | 可能 false || `is_cross_tenant` | bool | 是否跨租户用户(同公司=false,外部联系人=true) | — || `p2p_chat_id` | string | 与当前用户的 P2P 会话 ID(`oc_...`);空表示从未私聊过。可作为接受 `--chat-id` 的 IM 命令的输入 | 可能为空 || `has_chatted` | bool | `p2p_chat_id != ""` 的派生字段 | — || `department` | string | 部门路径,服务端可能用 `-` 拼层级,层级数不固定。**按可子串匹配的字符串处理** | 可能为空 || `signature` | string (optional) | 用户个性签名;空时字段不出现 | 可能不出现 || `chat_recency_hint` | string | 最近联系的提示文案,仅供展示 | 可能为空 || `match_segments` | string[] | 关键词命中的字符串片段,用于高亮展示;无命中则为空数组 | — |批量查同事的个人状态 / 个性签名(先用 schema 看参数)。```bashlark-cli schema contact.user_profiles.batch_querylark-cli contact user_profiles batch_query \ --params '{"user_id_type":"open_id"}' \ --data '{"user_ids":["ou_xxx","ou_yyy"],"query_option":{"include_personal_status":true,"include_description":true}}' \ --as user```# 批量回填:已知一组 open_id,取姓名 / 邮箱 / 部门lark-cli contact +search-user --user-ids "ou_a,ou_b,ou_c" --format json# 多 filter 组合:同租户的、有企业邮箱的「王」姓员工lark-cli contact +search-user --query "王" --exclude-external-users --has-enterprise-email# filter-only 枚举:列出所有"聊过天的离职同事"(无关键词)lark-cli contact +search-user --has-chatted --left-organization```- **41050 / Permission denied** 受当前身份的可见范围限制(三条命令都可能遇到)。细节见 [`lark-shared`](../lark-shared/SKILL.md)。- **跨租户用户**(`is_cross_tenant=true`)多数业务字段为空字符串,这是飞书可见性规则,下游做空值兜底。