---
id: change/bcquality/137
type: change
title: "#137 Add community guidance and review support for Business Central agents"
summary: Business Central agent developers gain 20 community-authored guidance rules covering agent registration, permissions, profiles, instructions, session handling, and lifecycle management, with good and bad code examples for each rule.
tier: official
language: en
tags:
  - feature
  - main
system: copilot
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:06:32.163Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: 53e2cf2fa4e582191efdc3effa6a935af864c08f
evidence:
  - kind: code
    url: https://github.com/microsoft/BCQuality/pull/137
    title: "microsoft/BCQuality#137: Add community guidance and review support for Business Central agents"
    date: "2026-09-02"
    commit: 53e2cf2fa4e582191efdc3effa6a935af864c08f
    t: null
    quote: Adds a new community knowledge domain for reviewing Business Central Agent SDK implementations.
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 137
repo: microsoft/BCQuality
source_id: bcquality-prs
url: https://github.com/microsoft/BCQuality/pull/137
kind: pr
base_branch: main
major: null
merged_at: "2026-09-02T14:06:26Z"
author: demiliani
author_type: User
community_contribution: false
labels: []
change_class: code
change_kind: feature
behavior_change: false
breaking: false
files:
  count: 65
  additions: 1555
  deletions: 36
  al: 61
apps: []
objects_touched: []
objects_unjoined:
  - path: community/knowledge/agents/agent-permissions-intersect-with-assigner.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-permissions-intersect-with-assigner.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-permissions-intersect-with-assigner.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-profile-narrows-visible-ui.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-profile-narrows-visible-ui.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-profile-narrows-visible-ui.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-page-is-configuration-dialog.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-page-is-configuration-dialog.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-page-is-configuration-dialog.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-source-table-is-temporary.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-source-table-is-temporary.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-source-table-is-temporary.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-table-keyed-by-user-security-id.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-table-keyed-by-user-security-id.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/agent-setup-table-keyed-by-user-security-id.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/analyze-message-error-stops-warning-forces-review.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/analyze-message-error-stops-warning-forces-review.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/analyze-message-error-stops-warning-forces-review.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/bind-agent-subscribers-only-in-agent-session.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/bind-agent-subscribers-only-in-agent-session.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/bind-agent-subscribers-only-in-agent-session.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/cross-app-agent-calls-need-your-public-api.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/cross-app-agent-calls-need-your-public-api.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/cross-app-agent-calls-need-your-public-api.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/do-not-create-agents-in-install-upgrade-or-background.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/do-not-create-agents-in-install-upgrade-or-background.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/do-not-create-agents-in-install-upgrade-or-background.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/get-default-access-controls-least-privilege.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/get-default-access-controls-least-privilege.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/get-default-access-controls-least-privilege.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/get-default-profile-lives-in-the-app.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/get-default-profile-lives-in-the-app.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/get-default-profile-lives-in-the-app.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/instruction-structure-is-role-rules-steps.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/instruction-structure-is-role-rules-steps.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/instruction-structure-is-role-rules-steps.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/instructions-describe-work-not-tool-ids.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/instructions-describe-work-not-tool-ids.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/instructions-describe-work-not-tool-ids.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/reapply-resource-instructions-on-upgrade.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/reapply-resource-instructions-on-upgrade.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/reapply-resource-instructions-on-upgrade.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/register-copilot-capability-for-the-agent.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/register-copilot-capability-for-the-agent.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/register-copilot-capability-for-the-agent.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/set-instructions-as-secrettext.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/set-instructions-as-secrettext.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/set-instructions-as-secrettext.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/show-can-create-agent-does-not-block-code-create.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/show-can-create-agent-does-not-block-code-create.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/show-can-create-agent-does-not-block-code-create.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/skip-incoming-review-only-for-trusted-input.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/skip-incoming-review-only-for-trusted-input.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/skip-incoming-review-only-for-trusted-input.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/use-documented-instruction-keywords.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/use-documented-instruction-keywords.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/use-documented-instruction-keywords.md
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/wire-all-three-agent-interfaces.bad.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/wire-all-three-agent-interfaces.good.al
    status: added
    reason: not-in-snapshot
  - path: community/knowledge/agents/wire-all-three-agent-interfaces.md
    status: added
    reason: not-in-snapshot
  - path: community/skills/review/al-agents-review.md
    status: added
    reason: not-in-snapshot
obsoletions: []
backports: []
fixes_issues: []
work_items: []
systems:
  - copilot
  - development
quote: Adds a new community knowledge domain for reviewing Business Central Agent SDK implementations.
joined_against:
  major: null
  commit: null
---

# #137 Add community guidance and review support for Business Central agents

> Business Central agent developers gain 20 community-authored guidance rules covering agent registration, permissions, profiles, instructions, session handling, and lifecycle management, with good and bad code examples for each rule.

[Pull request](https://github.com/microsoft/BCQuality/pull/137) · merged into `main` on 2026-09-02 by demiliani · 65 files (+1555 -36), 61 AL · feature · tier official · reviewed (checked by Opus)

## What changed

- 20 new community guidance rules for agent SDK implementations
- Each rule includes documentation and contrasting AL code examples
- Coverage spans registration, permissions, profiles, setup persistence, instructions, session behavior, and API design
- New standalone al-agents-review action skill for automated review
- Rules address least-privilege access, secure storage, lifecycle management, and input validation

## AL objects touched

- `community/knowledge/agents/agent-permissions-intersect-with-assigner.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-permissions-intersect-with-assigner.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-permissions-intersect-with-assigner.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-profile-narrows-visible-ui.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-profile-narrows-visible-ui.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-profile-narrows-visible-ui.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-page-is-configuration-dialog.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-page-is-configuration-dialog.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-page-is-configuration-dialog.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-source-table-is-temporary.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-source-table-is-temporary.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-source-table-is-temporary.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-table-keyed-by-user-security-id.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-table-keyed-by-user-security-id.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/agent-setup-table-keyed-by-user-security-id.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/analyze-message-error-stops-warning-forces-review.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/analyze-message-error-stops-warning-forces-review.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/analyze-message-error-stops-warning-forces-review.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/bind-agent-subscribers-only-in-agent-session.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/bind-agent-subscribers-only-in-agent-session.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/bind-agent-subscribers-only-in-agent-session.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/cross-app-agent-calls-need-your-public-api.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/cross-app-agent-calls-need-your-public-api.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/cross-app-agent-calls-need-your-public-api.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/do-not-create-agents-in-install-upgrade-or-background.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/do-not-create-agents-in-install-upgrade-or-background.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/do-not-create-agents-in-install-upgrade-or-background.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/get-default-access-controls-least-privilege.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/get-default-access-controls-least-privilege.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/get-default-access-controls-least-privilege.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/get-default-profile-lives-in-the-app.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/get-default-profile-lives-in-the-app.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/get-default-profile-lives-in-the-app.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/instruction-structure-is-role-rules-steps.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/instruction-structure-is-role-rules-steps.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/instruction-structure-is-role-rules-steps.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/instructions-describe-work-not-tool-ids.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/instructions-describe-work-not-tool-ids.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/instructions-describe-work-not-tool-ids.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/reapply-resource-instructions-on-upgrade.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/reapply-resource-instructions-on-upgrade.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/reapply-resource-instructions-on-upgrade.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/register-copilot-capability-for-the-agent.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/register-copilot-capability-for-the-agent.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/register-copilot-capability-for-the-agent.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/set-instructions-as-secrettext.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/set-instructions-as-secrettext.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/set-instructions-as-secrettext.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/show-can-create-agent-does-not-block-code-create.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/show-can-create-agent-does-not-block-code-create.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/show-can-create-agent-does-not-block-code-create.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/skip-incoming-review-only-for-trusted-input.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/skip-incoming-review-only-for-trusted-input.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/skip-incoming-review-only-for-trusted-input.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/use-documented-instruction-keywords.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/use-documented-instruction-keywords.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/use-documented-instruction-keywords.md`: added, not in the BC? snapshot yet
- `community/knowledge/agents/wire-all-three-agent-interfaces.bad.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/wire-all-three-agent-interfaces.good.al`: added, not in the BC? snapshot yet
- `community/knowledge/agents/wire-all-three-agent-interfaces.md`: added, not in the BC? snapshot yet
- `community/skills/review/al-agents-review.md`: added, not in the BC? snapshot yet

## Context

- Systems: copilot, development
- From the description: "Adds a new community knowledge domain for reviewing Business Central Agent SDK implementations."

Source: metadata of a merged pull request in microsoft/BCQuality (bcquality): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).
