forcedotcom / forcedotcom/cli

`agent preview` fails for published Employee Agents: `bypassUser: true` is hardcoded

Open Beginner friendly
#3,608 2 comments 0 reactions 0 assignees View on GitHub
area:afdx bug owned by another team
Dominant language
No language data
Stars
571
Forks
80
Avg merge
2d 15h
Merged PRs (30d)
3

Description

`sf agent preview` can never start a session with a published Employee Agent:

```
Error - Bad Request: Invalid user ID provided on start session:
```

`productionAgent.ts` hardcodes `bypassUser: true`:

https://github.com/forcedotcom/agents/blob/597dad0fca74c81aa8fa3a89b1718aa65c6bfbde/src/agents/productionAgent.ts#L355-L362

Per the [Agent API reference](https://developer.salesforce.com/docs/ai/agentforce/references/agent-api?meta=startSession), `true` means "use the user associated with the agent" and is only for the client credentials flow; the default is `false`. Employee Agents have no agent user (`BotDefinition.BotUserId` is null by design), so the server resolves an empty user ID.

Same org, same agent, same JWT, varying only `bypassUser`:

| body | result |
|---|---|
| `bypassUser: true` (what the CLI sends) | 400 `Invalid user ID provided on start session: ` |
| `bypassUser: false` | **200**, session created, messages exchanged |
| `userId` (explicit) | 400 `Unrecognized field "userId"` |

The Agent Script path in the same package already handles this:

https://github.com/forcedotcom/agents/blob/597dad0fca74c81aa8fa3a89b1718aa65c6bfbde/src/agents/scriptAgent.ts#L481-L493

The production (published agent) path is missing the equivalent.

**Repro**: deploy and activate any Employee Agent (reproduced with [coral-cloud](https://github.com/trailheadapps/coral-cloud)), then `sf agent preview --api-name `. The agent is listed as `(Published)`, so discovery works — only the session start fails.

**Suggested fix**: derive `bypassUser` in `productionAgent.ts` instead of hardcoding it, mirroring `scriptAgent.ts`.

**Workaround**: none from the CLI (no flag or env var). Calling the Agent API directly with `bypassUser: false` works.

**Env**: `@salesforce/cli` 2.143.6, `@salesforce/plugin-agent` 1.44.4, `@salesforce/agents` 1.10.2, Node 24.18.0, macOS arm64, Agentforce Developer Edition (API v67.0)

Contributor guide

Open the contributing guide

Research direction

Compare src/agents/productionAgent.ts at lines 355-362 with src/agents/scriptAgent.ts at lines 481-493, starting with how the script path determines bypassUser. Verify with an activated Employee Agent that sf agent preview creates a session and exchanges messages without the invalid-user error.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, typescript
Domain
cli
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.