Mehdi Lallouache
10/30/2025, 1:52 PMMarvin
10/30/2025, 1:52 PMMehdi Lallouache
10/30/2025, 2:03 PMMarvin
10/30/2025, 2:03 PMMarvin
10/30/2025, 2:05 PMMarvin
10/30/2025, 2:05 PMparameters dict stored on the deployment). It does not display defaults defined in your flow function signature. So:
- If you changed the default in your flow code (e.g., def flow(my_param="new_default")), runs will use that value — but the UI will still show “Unset” because no deployment-level override was stored.
- The UI shows a value only when you explicitly set parameters={...} on the deployment (e.g., via flow.serve(parameters=...), or when deploying with `prefect deploy`/prefect.yaml that includes parameters).
How to confirm
- Run:
prefect deployment inspect "your-flow-name/your-deployment-name"
In the output:
- parameters = deployment-level overrides (what the UI shows; if empty, you’ll see “Unset”)
- parameter_openapi_schema = your flow’s parameter schema (including any defaults from the function signature)
How to make the UI show the value
- If you want the Parameters tab to display the value, set it explicitly in your serve call:
if __name__ == "__main__":
flow.serve(
name="my-deployment",
parameters={"my_param": "desired_value"},
)
- Or set parameters when using `prefect deploy`/prefect.yaml.
This has no impact on execution — runs merge parameters in this order: run-time inputs > deployment.parameters > flow function defaults. That’s why your runs are correctly using the overridden value even though the UI says “Unset”.
References
- Deployments concepts (Prefect 3)
- Serving flows locally with flow.serve
If you did set parameters in flow.serve(...) and the UI still shows “Unset,” please share:
- The flow.serve(...) snippet you’re using,
- The output of prefect deployment inspect "flow/deployment",
- And the deployment name/ID.
I’m happy to dig deeper — that could indicate a bug.Mehdi Lallouache
10/30/2025, 2:13 PMMarvin
10/30/2025, 2:13 PMMarvin
10/30/2025, 2:17 PMprefect deployment inspect shows your override but the Cloud UI “Parameters” tab still says Unset, this points to a UI display issue rather than a deployment/config problem.
A couple quick confirmations to help narrow it down:
- What’s the parameter value/type you’re overriding? If it’s a falsy value (e.g., False, 0, "", [], {}), the UI may incorrectly render it as “Unset” even though it’s stored and used correctly.
- When you click “Run” in the UI, does the run drawer pre-fill that parameter with your override? If yes, that further confirms it’s just the tab’s rendering.
- A hard refresh or re-opening the deployment page won’t fix this if it’s the above bug, but worth a quick try.
If you can share:
- Deployment name/ID
- The parameter key and value
- Your flow.serve(...) snippet with the parameters={...} you set
- The prefect deployment inspect "flow/deployment" output showing parameters
I can reproduce and file a bug with the UI team. If you prefer to file it directly, please include those details and this title:
- “Deployment Parameters tab shows ‘Unset’ despite parameters set”
- Link: https://github.com/PrefectHQ/prefect/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=Deployment+Parameters+tab+shows+%22Unset%22+despite+parameters+set
For reference:
- Deployments concepts (Prefect 3)
- Serving flows locally with flow.serve
If the overridden value is not falsy and you’re still seeing “Unset,” that’s even more useful — it’d suggest a broader UI bug. Happy to dig in once I have those details.Mehdi Lallouache
10/30/2025, 2:28 PMMarvin
10/30/2025, 2:28 PMMarvin
10/30/2025, 2:30 PMFalse, 0, "", [], {} can appear as “Unset” in the Deployment Parameters tab even though they’re correctly stored and used for runs. Your CLI inspect output and the run behavior confirm the backend is fine; it’s just the front-end rendering.
Quick confirmations/workarounds:
- If you temporarily set the value to True, it should display correctly — which helps confirm it’s a falsy-value display issue.
- Use prefect deployment inspect or the Run drawer pre-filled values to verify the actual parameter value until this is fixed.
If you’re open to it, I can file a bug for you — or you can file one directly here:
- https://github.com/PrefectHQ/prefect/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=Deployment+Parameters+tab+shows+%22Unset%22+for+falsy+values
Suggested report details:
- Prefect Cloud, Prefect 3.4.25
- Deployment created via flow.serve(parameters={"flag": False})
- Expected: Parameters tab shows False
- Actual: Parameters tab shows “Unset”
- Repro snippet:
from prefect import flow
@flow
def my_flow(flag: bool = True):
return flag
if __name__ == "__main__":
my_flow.serve(
name="repro",
parameters={"flag": False},
)
If you’d like me to file it on your behalf, share the deployment name/ID and I’ll include a minimal repro and mark it as a UI regression.Mehdi Lallouache
10/30/2025, 2:44 PMMarvin
10/30/2025, 2:44 PMMarvin
10/30/2025, 2:45 PMfrom prefect import flow
@flow
def my_flow(flag: bool = True):
return flag
if __name__ == "__main__":
my_flow.serve(
name="repro",
parameters={"flag": False}, # falsy override
)
Steps:
- Serve the deployment in Prefect Cloud (3.4.25)
- Open the Deployment > Parameters tab → shows “Unset”
- Run:
prefect deployment inspect "my_flow/repro"
→ parameters shows {"flag": false}
- Launch a run from the UI → run uses flag=False as expected
I’ll file this as a UI bug: “Deployment Parameters tab shows ‘Unset’ for falsy values.” I won’t include any sensitive details. I’ll post the GitHub link here once it’s created so you can track it.
If you’re able to share non-sensitive confirmations, they help scope the fix (optional):
- Is the parameter top-level and boolean (not nested)?
- Any other falsy values (0, "", [], {}) also affected for you?
In the meantime, the best workaround is to trust prefect deployment inspect and the pre-filled values in the Run drawer; execution is correct despite the Parameters tab display.Mehdi Lallouache
10/30/2025, 2:49 PMMarvin
10/30/2025, 2:50 PMMarvin
10/30/2025, 2:52 PMflow.to_deployment(parameters=...) then serve(deployment)) is fully supported and would hit the same UI edge case. This is a front-end display bug: top-level falsy deployment parameters (e.g., False) can show as “Unset” in the Deployment Parameters tab even though they’re correctly stored and used for runs.
What I’ll do
- I’ll file a public bug with a minimal repro and no workspace/deployment identifiers and will post the link back here once it’s live.
Workarounds in the meantime
- Trust prefect deployment inspect and the pre-filled value in the Run drawer — execution is correct.
- If you need to visually confirm in the UI, temporarily set the override to True to see it render (then switch back to False).
- Optionally note the default in the deployment description as a reminder until the UI fix ships.
References
- Deployments concepts (Prefect 3)
- Serving flows locally with flow.serve
I’ll follow up with the GitHub issue link as soon as it’s posted.Mehdi Lallouache
10/30/2025, 2:57 PMMarvin
10/30/2025, 2:57 PMMarvin
10/30/2025, 2:58 PMfrom prefect import flow
@flow
def my_flow(flag: bool = True):
return flag
if __name__ == "__main__":
d = my_flow.to_deployment(name="repro", parameters={"flag": False})
my_flow.serve(d)
If you prefer an issue instead, I can file that and share the link once it’s created.Mehdi Lallouache
10/30/2025, 3:07 PMMarvin
10/30/2025, 3:07 PMMarvin
10/30/2025, 3:08 PM