---
cuppy_hub: salesforce
cuppy_path: changelog/2026-10-22-agentforce-agents-family.md
cuppy_section: docs
cuppy_doc: Q320-005W
cuppy_doc_uuid: 7a20e45e-a398-4100-a512-b9e5baa0bd00
cuppy_permalink: https://cuppy.io/salesforce/d/Q320-005W
cuppy_version: 1
cuppy_updated: 2026-10-23T16:16:52.575Z
cuppy_canonical: https://cuppy.io/salesforce/docs/changelog/2026-10-22-agentforce-agents-family
cuppy_mcp: https://cuppy.io/mcp
cuppy_body_sha256: ff4174ee90abd4ed458e12116f2d5069937e86c249aa10b6ac7e650288af50c2
# cuppy_body_sha256 is over the document body ALONE, excluding both generated blocks.
---


# Salesforce hub — family 3, Agentforce agents (2026-10-22)

## Added

- `reference/agentforce/agent-script.md`: blocks, `access`, variables and the three linked sources, subagents, tools, `before_reasoning` and `after_reasoning`, the four utilities, conditions, templates and operators, and where Salesforce's sources disagree.
- `reference/agentforce/agent-script-actions-and-targets.md`: declaring actions, the 25 target schemes, matching names to Apex, flows and prompt templates, `complex_data_type_name`, and what publishing creates at API 68.0 and before.
- `guides/agentforce/build-agent-with-agentforce-dx.md`: org prep, then generate, write, validate, preview (simulated, then live), publish, activate and commit. It includes a complete data-steward agent.
- `reference/agentforce/agent-errors.md`: Agent Script diagnostics verbatim, CLI messages and exit codes, and how the CLI authenticates (named-user JWT; `chatbot_api`, `sfap_api`, `web`).
- Family 1 and 2 documents now link here instead of "family 3", and the agent-user page says `access`.

## Settled

**`default_agent_user` goes in the `access` block.**
- Salesforce's docs mark it "Deprecated in this block" for `config`, and the linter warns there.
- The CLI's agent template, the CLI's authoring-bundle boilerplate and the recipes' rules file still write it in `config`.

## Found while building

| # | Finding |
|---|---|
| 1 | The CLI's generators (`sf project generate --template agent`, `sf agent generate authoring-bundle`) write the deprecated `config.default_agent_user` |
| 2 | The recipes' rules file gives `source: @session.sessionID` for a linked variable, and the ContextHandling recipe uses `@messagingSession.*`. Both fail the linter, which accepts only `@MessagingSession`, `@MessagingEndUser` and `@VoiceCall` |
| 3 | The spec and docs say `else if` is unsupported and suggest nested `if`. The linter (synced from Salesforce internal on 2026-10-13) does the reverse |
| 4 | Two shapes are in circulation for the `modality voice` block: flat fields in the docs, nested `outbound.persona_id` and `outbound.model.id` in the newest recipe |
| 5 | The agent commands need a named-user JWT. A login through your own app needs `chatbot_api`, `sfap_api` **and `web`**; the Agent API setup lists no `web` |
| 6 | At API 68.0+, publish retrieves `AiAgentDefinition` / `AiAgentDefinitionVersion` instead of `Bot`, `GenAiPlugin` and `GenAiFunction` |
| 7 | Salesforce's own agent template triggers two linter warnings (deprecated field; `complex_data_type_name` on a primitive) |
| 8 | Several rules in the recipes' guide (mutable default, `system.messages`, no `set` on utilities, no `@inputs` in `set`) aren't enforced by the linter. They may still fail on the server |

## How it was checked

- Salesforce's open-source Agent Script toolchain (github.com/salesforce/agentscript) was built locally. `work/tools/aslint.mjs` lints and compiles. `check_code.py` runs it on every whole-agent block and on 30 probes in `work/tools/astests/`, each with an expected result.
- All 34 recipe agents and the CLI template were linted: one recipe fails and three have warnings.
- Every `sf` command and flag was swept against CLI 2.155.7.
- CLI messages were read from `plugin-agent`, and the auth and publish flow from `@salesforce/agents`, both at pinned commits.

## Still missing

- No org was used. Server-side validate, publish, preview and activate output is quoted from Salesforce's source, not from runs.
- Not covered: knowledge, context and `connected_subagent` blocks beyond a line each; Agentforce Builder UI.
- Agent tests: family 4.


---
<!-- cuppy -->
You are reading one file. The same content is free over MCP at https://cuppy.io/mcp with no signup: ranked search across all 376 documents in this hub, the merged view when you work in a layer, known workarounds matched to the error you hit, and depth control so you spend tokens on what you need. Start with the `_hello` tool. How to connect: https://cuppy.io/salesforce/ Something wrong in this document? Report it with the `session feedback` tool on the same endpoint.
<!-- /cuppy -->
