Concept
A silent field is aGATHER field that the agent never asks for. The runtime reads the customer’s messages and fills the field when it finds a matching value. If the customer never mentions it, the field stays empty and the conversation goes on.
You make a field silent with prompt_mode: extract_only. The default is ask.
A silent field needs no
prompt. Add a description so the extractor knows what the value means. Add options, extraction_hints, or extraction_pattern to improve accuracy.
Always set required: false on a silent field. A field is required by default. A required silent field blocks completion, and the step has no question to ask for it.
Minimal working example
A claims assistant asks for the member ID. It also listens for a claim status and a minimum amount. It never asks for them.agents/claims-filter-intake.agent.abl
member_idis asked. The customer answers the prompt.claim_statusandmin_amountare filled only when the customer mentions them. They can stay empty.
How it works
- The step asks only for the customer-facing fields that are missing. Silent fields are left out of the question.
- On each customer message the runtime tries to extract values for all active fields, silent fields included.
- A silent field stays in the extraction scope even when the agent is collecting a different step. A top-level silent field is extracted in every
FLOWstep. - The runtime does not copy the whole message into a silent field.
- Extracted values carry the source
inferenceand the reasonner_extracted, and they are marked as grounded in the customer’s words.
extraction_patternwith an optionalextraction_group(default 0) is the deterministic path. It uses a safe regular expression engine with no back-references and no lookaround. An unsafe pattern fails compilation.strategysets the engine for one field:auto,ml,llm,hybrid, orpattern.hybridis an alias ofauto. A field without a strategy follows the project extraction mode. An unknown value is a compile errorE170.- The extractor needs a model client wired. Without one, a scripted flow falls back to plain collection.
Common variations
Silent field on a reasoning agent
A top-levelGATHER extracts the silent field the same way. The reasoning agent’s prompt still lists every field, including silent ones, as information to gather. The prompt says to ask for missing required fields. To keep the model from asking, set required: false and say so in the GOAL, as the example does.
agents/order-support-intake.agent.abl
Capture with a pattern
Addextraction_pattern when the value has a fixed shape, such as a ticket ID. The pattern needs no model call.
FLOW step. Place it inside a step.
Router-derived routing state
A router can combineinfer: true with prompt_mode: extract_only for a value that only its route conditions read. The router re-derives such a value on every routing call. See Infer values from conversation context.
Verification
- Run the validator. Expect no errors and no warnings.
- Say “Look up member 4471”. Expect the agent to ask nothing about the status or amount.
- Say “Look up member 4471, denied claims over 500”. Expect
claim_statusandmin_amountto fill. - Check the final reply. The unmentioned filters must be empty in case 2.
- In the trace, open the
dsl_collectevents. Theextractedfield lists the silent values. - Open the
gather_slot_ledgerevents. Silent fields must not appear inmissingFieldswhenrequired: false.
Production readiness checklist
- Every silent field sets
required: false. On a reasoning agent, theGOALalso says not to ask for it. - Every silent field has a
description, and an enum field hasoptions. - A downstream step handles an empty silent field.
- A model client is configured for the agent.
- Tests cover a customer who states the value, a customer who does not, and a customer who states a different value later.
- Silent fields that hold personal data also follow Collect sensitive or PII fields safely.
Common mistakes
Troubleshooting
Related articles: