Hub security features  ](/en/actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions)
    * [ Automatic token authentication  ](/en/actions/security-guides/automatic-token-authentication)

  * Creating actions 

    * [ About custom actions  ](/en/actions/creating-actions/about-custom-actions)
    * [ Create a Docker container action  ](/en/actions/creating-actions/creating-a-docker-container-action)
    * [ Create a JavaScript action  ](/en/actions/creating-actions/creating-a-javascript-action)
    * [ Create a composite action  ](/en/actions/creating-actions/creating-a-composite-action)
    * [ Metadata syntax  ](/en/actions/creating-actions/metadata-syntax-for-github-actions)
    * [ Dockerfile support  ](/en/actions/creating-actions/dockerfile-support-for-github-actions)
    * [ Set exit codes  ](/en/actions/creating-actions/setting-exit-codes-for-actions)
    * [ Publish in GitHub Marketplace  ](/en/actions/creating-actions/publishing-actions-in-github-marketplace)
    * [ Share from your private repository  ](/en/actions/creating-actions/sharing-actions-and-workflows-from-your-private-repository)
    * [ Share with your organization  ](/en/actions/creating-actions/sharing-actions-and-workflows-with-your-organization)
    * [ Release and maintain actions  ](/en/actions/creating-actions/releasing-and-maintaining-actions)
    * [ CLI setup action  ](/en/actions/creating-actions/developing-a-third-party-cli-action)

  * [ Guides for GitHub Actions  ](/en/actions/guides)

  * [ GitHub Actions ](/en/actions "GitHub Actions") / 
  * [ Using workflows ](/en/actions/using-workflows "Using workflows") / 
  * [ Workflow commands ](/en/actions/using-workflows/workflow-commands-for-github-actions "Workflow commands")

#  Workflow commands for GitHub Actions

You can use workflow commands when running shell commands in a workflow or in
an action's code.

##  Tool navigation

  * [ Bash  ](?tool=bash)
  * [ PowerShell  ](?tool=powershell)

##  In this article

  * About workflow commands 
  * Using workflow commands to access toolkit functions 
  * Setting a debug message 
  * Setting a notice message 
  * Setting a warning message 
  * Setting an error message 
  * Grouping log lines 
  * Masking a value in a log 
  * Stopping and starting workflow commands 
  * Sending values to the pre and post actions 
  * Environment files 
  * Setting an environment variable 
  * Setting an output parameter 
  * Adding a job summary 
  * Adding a system path 

##  About workflow commands

Actions can communicate with the runner machine to set environment variables,
output values used by other actions, add debug messages to the output logs,
and other tasks.

Most workflow commands use the ` echo ` command in a specific format, while
others are invoked by writing to a file. For more information, see "
Environment files  ."

###  Example of a workflow command

Bash

    
    
    echo "::workflow-command parameter1={data},parameter2={data}::{command value}"
    
    
    
    echo "::workflow-command parameter1={data},parameter2={data}::{command value}"
    

PowerShell

    
    
    Write-Output "::workflow-command parameter1={data},parameter2={data}::{command value}"
    
    
    
    Write-Output "::workflow-command parameter1={data},parameter2={data}::{command value}"
    

**Note:** Workflow command and parameter names are case insensitive.

**Warning:** If you are using Command Prompt, omit double quote characters ( `
" ` ) when using workflow commands.

##  Using workflow commands to access toolkit functions

The [ actions/toolkit ](https://github.com/actions/toolkit) includes a number
of functions that can be executed as workflow commands. Use the ` :: ` syntax
to run the workflow commands within your YAML file; these commands are then
sent to the runner over ` stdout ` . For example, instead of using code to
create an error annotation, as below:

JavaScript

    
    
    core.error('Missing semicolon'