AI Coding Assistant Security Starts With Reviewing Configuration Changes
Configuration changes can change what runs
A pull request can alter a coding assistant’s behavior without touching application source. A setup hook, tool registration or instruction file may cause commands to run on developers’ machines or in automated workflows. The practical security question is therefore not just what a new file says, but what it can cause to happen, when it happens and with whose permissions.
That risk has a real example. In an October 8 analysis of agent-skill distribution, StepSecurity revisited the June Miasma campaign. It described AI-tool and editor configuration planted in a Microsoft repository to trigger credential harvesting through developer tooling, without changing application source.
StepSecurity reported that the commit used a skip-CI flag and a backdated timestamp, and shifted execution from package installation to opening a folder. That shift matters: a safeguard that checks only the build pipeline can miss behavior triggered when a developer opens the repository. For many teams, the pull request is the first reliable point to examine that change before it reaches colleagues.
My read is that organizations need a named owner and an enforceable review path for files that steer coding assistants. Teams should be able to establish who approved a behavior, what the approval covered and where that approved configuration is permitted to run.
Assess the mechanism, trigger and permissions
Filenames offer little assurance about behavior. A repository file might describe coding conventions, point an assistant to a script, register a tool or arrange for a command to run at a particular event. Reviewers need to understand the mechanism and trigger, then identify the permissions available when it runs.
Markdown instructions are not executable code by themselves. But an assistant acting on them may have permission to execute commands. A JSON setting, meanwhile, may register a shell command directly. Treat each file according to what the tool does with it, rather than assuming a familiar extension makes it harmless.
Skills are a useful example of why this distinction matters. StepSecurity notes that a skill’s allowed-tools field can let an agent use listed tools without a permission prompt during the turn in which the skill is invoked. It also says Claude Code documentation does not treat workspace trust as a gate for that field. Because a SKILL.md file is Markdown, reviewers may be inclined to assess it like ordinary documentation, even when it affects which tools an agent can use.
Anthropic’s current hooks reference says command hooks run with the user’s permissions. It also describes a difference between interactive and noninteractive sessions: repository settings-file hooks can run in a noninteractive session without the trust dialog shown to an interactive user. The behavior depends on the configuration surface and how the session starts. A control verified in a developer’s terminal therefore needs a separate check in any automated workflow that uses the repository.
Anthropic’s documentation describes several ways to reduce exposure in noninteractive runs over repositories the team didn’t write: inspect their .claude settings files, start in bare mode or disable hooks for the run. Administrators can also set managed-hooks-only to block user, project, local and plugin hooks. These options address different setups, so teams should verify their effect in the launch conditions they actually use.
For a proposed setup hook, trace its command to the script and dependencies it invokes. If the script downloads a program, find out how the program is chosen and verified. If it reads credentials or makes network requests, the author should explain why those capabilities are needed. Asking while the change is under review gives the author a chance to explain the intent before the configuration reaches other developers.
Make review ownership part of the repository controls
Engineering productivity teams often have the strongest grasp of shared assistant configuration. Security teams can define which changes call for a second reviewer, such as adding executable hooks, expanding network access or introducing an external tool. The application team still needs to decide whether the integration belongs in its workflow.
That division doesn’t require sending every formatting preference through a security queue. Set clear criteria for behavior changes and direct those changes to people who understand the assistant and its execution environment. Reviewers should receive a concise description of the trigger, the access required and the expected side effects.
GitHub’s code-owner documentation explains how code ownership works with required reviews. A CODEOWNERS file by itself doesn’t require an owner’s approval; branch protection needs to make that review mandatory. GitHub also recommends protecting the ownership file, since changing the rules that assign reviewers can undermine the intended process.
Apply the review rule to both assistant configuration and the scripts it calls. If a settings file is protected but its helper script can change without the same review, the policy leaves an obvious gap. Confirm the effective rules with a sample pull request. The presence of a CODEOWNERS file is not evidence that the intended approval path is active.
Inspect the environment around the repository
Repository files are only part of the setup. Developers may add skills, plugins and user-level configuration outside the project. An approved repository can therefore be used alongside instructions its maintainers have never seen. Teams need a baseline for supported tools and launch methods, plus a way to inspect the configuration that actually takes effect.
Record the origins and versions of approved additions. When a developer’s local copy differs from the approved version, compare the contents before deciding what the difference means. That gives reviewers something concrete to investigate instead of relying on filenames or assumptions about where a file came from.
Microsoft’s Workspace Trust guidance for Visual Studio Code describes Restricted Mode, which limits features that can execute workspace content. The documentation also warns that a malicious extension can ignore that boundary. Workspace trust can help within its documented scope, but it should sit alongside a deliberate extension policy and an environment suited to the repository under inspection.
Use unfamiliar repositories in an isolated environment that doesn’t routinely contain production credentials. A container alone may not provide meaningful separation if it inherits developer secrets or can access the host. Review those connections directly. For everyday approved work, make the safe setup practical: maintain shared configurations, explain how to request additions and offer a clean way to inspect them.
Test the controls under real launch conditions
A disposable repository and isolated environment can show whether the approval process works. Add a benign hook that writes a harmless marker file. Check whether the pull request reaches the intended owner, whether an unapproved change can merge and whether the installed tool permits the action under the launch conditions the team uses.
Repeat the exercise through any noninteractive workflow. Then change only the helper script referenced by the configuration. That second check reveals whether the review boundary covers the behavior behind the setting, as well as the setting itself.
Record which controls stopped execution and which only produced an alert or record. A scanner, a required approval and a runtime restriction have different jobs; none should be treated as proof that the others are working. The exercise should leave the team with a specific account of the gaps it found.
Three questions make a useful starting review: Who can merge changes to the files that steer the coding assistants? Does the rule cover every script those files call? Which automated jobs run an assistant over code the team didn’t write, and do those jobs apply the same trust checks as a developer’s terminal?
For security leaders, a practical measure is whether execution-changing updates reach the right reviewer before distribution, and whether the working environment stays within the approved scope. Start with one supported tool and one engineering team. Have them demonstrate who can change its behavior, how that change is reviewed and what happens when someone tries to bypass the process.